Graphique dynamique en VBA

LouisBlanc

XLDnaute Nouveau
Bonjour à tous

Dans une macro, je fais un graphique à partir d'un tableau donc le nombre de ligne et le nombre de colonne changent en fonction du traitement. Je sais définir la plage sous la forme range(cells(pl,pc),cells(dl,dc)), mais VBA attend la plage sous forme range("A1:F15") par exemple.
Y a t'il une solution pour convertir la définition de la plage.
Ca marche bien pour un graphique de type XY, mais pas pour un graphique type Y1,Y2,Yn f(X)
La première colonne du tableau contient les valeurs de X.

Ci dessous portion du code

'pl = première ligne tableau
'pc = première colonne tableau
'dl = dernière ligne tableau
'dc = drnière colonne tableau

plage = Range(Cells(pl, pc), Cells(dl, dc))
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Sheets("Tableau3").Range("A1:F15"), PlotBy:=xlColumns

C'est la définition de Range dans SetSourceData qui bug

Merci d'avance
 

LouisBlanc

XLDnaute Nouveau
Re : Graphique dynamique en VBA

Bonjour pierrejean

je ne comprends pas ta réponse.
Si par exemple j'ai une sélection type Range ("C2:F15"), j'ai :
pl = 2
pc = 3
dl = 15
dc = 6
avec ma sélection qui est :
plage=range(cells(pl,pc), cells(dl,dc))

Or, l'instruction SetSourceData n'accepte pas le définition de ma plage avec les variables.
 

LouisBlanc

XLDnaute Nouveau
Re : Graphique dynamique en VBA

OK

Après plusieurs essais, ça fonctionne.
Il faut d'abord mettre en variable l'adresse de la sélection convertie, puis mettre cette variable dans le Range du SetSourceData

code ci dessous

plage = Range(Cells(pl, pc), Cells(dl, dc)).Address()
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Sheets("Tableau3").Range(plage), PlotBy:=xlColumns

Merci de m'avoir mis sur la piste.
 

Discussions similaires

Réponses
3
Affichages
658

Statistiques des forums

Discussions
312 875
Messages
2 093 148
Membres
105 641
dernier inscrit
Naoel