2 pièce(s) jointe(s)
Automatisation de création de graphiques
Bonjour à tous!
Je débute en VBA et cela fait deux jours que j'essaye de faire une macro sans résultat, j'ai besoin d'aide pour trouver ce qui coince dans mon code.
Je n'ai pas pu mettre le fichier Excel en pièce jointe donc j'ai mis quelques impressions écrans, et ci-dessous les explications sur ce que j'aimerais obtenir:
J'ai deux feuilles excel:
-la feuille 1 qui contient les différentes plages de données
-la feuille 2 qui contiendra les graphiques relatifs à chaque plage de données
Les deux feuilles sont sous forme d'une grosse matrice 12x12, dont chaque élément ((1,1), (1,2), (1,3) etc...) est une colonne de 180 valeurs (ce sont des valeurs en fonction d'un angle). J'ai donc au total 12x12x180 valeurs.
J'aimerais pour chacune des plages de données un graphique type aires qui se place correctement et se mets aux bonnes dimensions comme j'ai fait à titre d'exemple dans la feuille 2.
J'ai commencé à écrire le code pour la création et le placement du graphique (pas encore la mise au dimensions), mais j'ai pour commencer une erreur 1004 à la ligne "Set Values = Worksheets("Feuil1").Range(Cells(X, Y), Cells(U, V))" et je ne pense pas que ce sera la seule!
Pouvez-vous m'aider?
Coralie
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Sub Graphe()
'
' Graphe Macro
'
Dim i As Integer
Dim j As Integer
For i = 1 To 12
For j = 1 To 12
'Coordonnées de le première case de la plage de données allant en ordonées du graphe
Dim X As Long
X = 5 + (j - 1) * 186 'ligne
Dim Y As Long
Y = 1 + 3 * i 'colonne"
'Coordonnées de le dernière case de la plage de données allant en ordonées du graphe
Dim U As Long
U = 5 + (j - 1) * 186 + 180 'ligne
Dim V As Long
V = 1 + 3 * i ' colonne
Dim Graphic As Chart, Values As Range
Cells(X, Y).Select 'Pour que le graphique se place au bon endroit
Set Values = Worksheets("Feuil1").Range(Cells(X, Y), Cells(U, V))
Set Graphic = ThisWorkbook.Charts.Add
Graphic.ChartType = xlArea
Graphic.SetSourceData Values, Range("B5,B185") ' toujours la même chose (de 0 à 180°), donc pas besoin de faire varier avec i et j
Next
Next
End Sub |