Bonjour à tous,
Voici mon tableau :
Nom A B C D
a 8 3...
a 6 2...
a 5 7...
b 7 5...
b 3 10...
b 4 11...
b 9 13.....
c 20 72....
c 13 86....
Je cherche à automatiser la création de plot suivante :
Graphique n°1
série a : en x les valeurs correspondent à la colonne A où le Nom est "a"
en y les valeurs correspondent à la colonne B où le nom est "a"
série b : la meme chose mais les valeurs sont celles où le Nom est "b"
série c : la meme chose mais les valeurs sont celles où le Nom est "c"
En gros, pour l'exemple ci dessus, la série a aurait comme valeur en x(8;6;5;7) en y(3;2;5;7), la série b aurait comme valeur en x(7;3;4;9) en y(5;10;11;13) et la série c aurait comme valeur en x(20;13) en y(72;86).
Pour l'instant, j'arrive à sélectionner la première (appelons là Y) et la dernière ligne (Z) avec le meme nom (ici Y=A2 et Z=A5 pour "a" ) puis a sélectionner la même chose pour les séries suivantes.
Ce que je n'arrive pas à faire, c'est de définir les valeurs à prendre en x et en y lors de la création de la série du graphe ici :
ActiveChart.FullSeriesCollection(1).XValues =
ActiveChart.FullSeriesCollection(1).Values =
Comment lui dire que Xvalues = Y:Z mais colonne B (soit B2:B5) ?
Voici mon code, c'est pas propre, je suis débutant :
Spoiler :
Sub Plots()
i = 1
x = Cells(i + 1, 1).Value 'Définie la premiere case à tester
ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select 'creation graphique
While Not IsEmpty(x) 'boucle pour tracer série
A = Cells(i + 1, 1) 'définie la premiere ligne de la source
C = Cells(i + 1, 1).Value 'définie le nom de la source
While x = Cells(i + 2, 1).Value 'boucle pour selectionner série
i = i + 1
Wend
B = Cells(i + 2, 1) 'définie la derniere ligne de la source
i = i + 1
x = Cells(i + 1, 1).Value 'incrémente x jusqu'à case vide
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(1).Name = C
ActiveChart.FullSeriesCollection(1).XValues = "='Test macro'!$B$2:$B$12"
ActiveChart.FullSeriesCollection(1).Values = "='Test macro'!$C$2:$C$12"
Wend
End Sub |
L'idéal par la suite étant de tracer un nouveau graphique en prenant en x la colonne A et en y la colonne C et ainsi de suite.