Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 

pierrejean

XLDnaute Barbatruc
Re : Graphique dynamique en VBA

Re

Fais un petit fichier exemple et tu auras certainement plus de reponses

sinon teste quelque chose du genre:

Code:
Charts(1).SetSourceData Source:=Sheets(1).Range(plage.Address(0, 0)), PlotBy:=xlColumns
 

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
748
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…