Graphique sous Excel VBA

DPH91

Nouveau membre
Bonjour,

C'est encore moi...

J'ai avancé dans la macro de conception de mon graphique.
Mais je coince sur une Macro.

J'ai un premier combo qui va chercher dans une feuille excel toute les valeur de la colonne "A"
J'ai un deuxième combi qui va chercher dans la meme feuille toutes les valeurs de la colonne "A"

Je cherche à trouver une macro qui me sélectionne en fonction de la valeur de la première et de la deuxième combo, la plage de cellule comprise entre la combo 1 et la combo 2.
Et qui aille chercher dans la colonne "B" et(ou) "C" la plage de valeur correspondante ...

J'espere être assez claire dans mon explication

En attendant vos suggestions

Bonne journée


 

DPH91

Nouveau membre
Utilise Range que tu paramètres en fonction de tes deux combos.

Merci pour cette réponse ultra rapide, mais je débute dans la macro.
Voici actuellement ce que j'ai dans mon userform

'Remplissage du premier combo
Dim debut()
debut = Range([A2], [A2].End(xlDown))
Me.DateDebut.List = debut
'Remplissage du deuxième combo
Dim fin()
fin = Range([A2], [A2].End(xlDown))
Me.DateFin.List = debut

 

DPH91

Nouveau membre
Utilise Range que tu paramètres en fonction de tes deux combos.


Oups, désolé, erreur de manip, le courrier est parti alors que je n'avais pas fini mon explication
Je reprend ...

Merci pour cette réponse ultra rapide, mais je débute dans la macro.
Voici actuellement ce que j'ai dans mon userform

Dim debut()
debut = Range([A2], [A2].End(xlDown))
Me.DateDebut.List = debut

Dim fin()
fin = Range([A2], [A2].End(xlDown))
Me.DateFin.List = debut

Création du graphique avec ceci

Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("export").Range("A1:A29,C1:C29"), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="TO Jour " & Hotel.Value
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = Hotel.Value & " du " & DateDebut.Value & " au " & DateFin.Value
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Taux D'occupation"
End With

Mon soucis est comment faire comprendre à

.Range("A1:A29,C1:C29"), _

D'aller chercher la plage de date entre la valeur du premier et du deuxième combo

Cordialement



 

zeb

Modérateur
( Modifie ton post pour mettre une balise CODE au lieu de SPOILER :sarcastic: )
 

DPH91

Nouveau membre
( Modifie ton post pour mettre une balise CODE au lieu de SPOILER :sarcastic: )

Donc voici avec les codes

Initialisation des CombosBox

[cpp] Dim debut()
debut = Range([A2], [A2].End(xlDown))
Me.DateDebut.List = debut

Dim fin()
fin = Range([A2], [A2].End(xlDown))
Me.DateFin.List = debut[/cpp]

Conception du graphique

[cpp] ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("export").Range("A1:A29,C1:C29"), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="TO Jour " & Hotel.Value
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = Hotel.Value & " du " & DateDebut.Value & " au " & DateFin.Value
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Taux D'occupation"
End With[/cpp]

La partie ".Range("A1:A29,C1:C29" ),", je souhaiterai qu'elle soit remplie en fonction des valeurs du Premier et Deuxième Combo, et qu'il aille chercher dans la colonne "B" et/ou "C" les valeurs correspondante.

D'avance merci



 

zeb

Modérateur
Alors dans ton cas, il faut que tu construises la chaine "A1:A29,C1:C29" à partir des choix des combos.

A et C sont fixés, c'est 1 et 29 qu'il faut paramétrer.

En passant, si tu mets [2], [2].End.. pour remplir tes combos, je ne vois pas pourquoi ça commencerais à 1... Passons.

Si tu remplis ton combo avec des données sans les trier, si tu choisis la première donnée, la valeur de Combo.ListIndex sera à 0, pour la seconde, 1, etc.

La chaine devient donc :[fixed]"A" & DateDebut.ListIndex + 1 & ":A" & DateFin.ListIndex + 1 & ",C" & DateDebut.ListIndex + 1 & ":C" & DateFin.ListIndex + 1[/fixed]C'est ça que tu dois passer en paramètre.

Aller chercher "B" et/ou "C". Bon je n'ai pas bien compris ton truc là !
 

DPH91

Nouveau membre
Merci Beaucoup, C'est tout à fait ce que je cherchais, et puis en plus c'est très logique...

J'y avais pas pensé

Thanks a lot
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 080
Messages
6 716 716
Membres
1 586 248
Dernier membre
GxBear263
Partager cette page
Haut