VBA Automatisation de la création de 144 Graphiques

Cooralie

XLDnaute Nouveau
Bonjour à tous!

Je débute en VBA et cela fait trois jours que j'essaye de faire une macro sans résultat, j'ai besoin d'aide pour trouver ce qui coince dans mon code... j'ai posté déjà sur plusieurs forums, et personne ne m'a répondu :( Pourtant je pense que c'est une faute de syntaxe très bête que je fais et que ce n'est vraiment pas très compliqué.

J'ai mis 2 impressions écran en pièces jointes, et ci-dessous quelques explications sur ce que j'aimerais obtenir:

J'ai deux feuilles excel:
-la feuille 1 qui contient différentes plages de données (144)
-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 de 180 valeurs 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? Voici le code ci dessous

Coralie


Sub Graphe()
'
' Graphe Macro
'
Dim i As Integer 'incrément colonne
Dim j As Integer 'incrément ligne



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 ordonné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 ordonné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, lngValues As Range
Cells(X, Y).Select 'Pour que le graphique se place au bon endroit
Set lngValues = 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
 

Pièces jointes

  • Capture d’écran 2012-12-05 à 12.17.50.jpg
    Capture d’écran 2012-12-05 à 12.17.50.jpg
    56.4 KB · Affichages: 156
  • Capture d’écran 2012-12-05 à 12.18.52.jpg
    Capture d’écran 2012-12-05 à 12.18.52.jpg
    16.8 KB · Affichages: 110

MJ13

XLDnaute Barbatruc
Re : VBA Automatisation de la création de 144 Graphiques

Bonjour Cooralie

Je n'a pas trop le temps en ce moment, mais il serait plus simple de mettre un fichier Excel sans données confidentielle le plus simple possible avec au moins un graphique formaté. Ensuite quelqu'un pourra t'aider plus facilement :).

Sinon, quelle est ta version d'excel (cela m'interpelle sur ton image)?
 

camarchepas

XLDnaute Barbatruc
Re : VBA Automatisation de la création de 144 Graphiques

Bonjour Mj13, Cooralie,

Si tu pouvais juste nous joindre les 2 premiers tableaux après l'on peut dupliquer à l'infini et sauf cas spécifique, cela devrait être suffisant.

Car sans support , c'est vraiment pas top à faire les tests qui garantissent que notre raisonnement tiens la route.
 

MJ13

XLDnaute Barbatruc
Re : VBA Automatisation de la création de 144 Graphiques

Re , Bonjour Camarchepas

On ne veut pas tout ton fichier, mais juste une dizaine de séries avec une dizaine de points avec 1 ou 2 graphiques. Cela ne devrait pas dépasser une centaine de ko.

En plus, cela permettra de voir si entre MAC et PC, il y a des incompatibilités :).
 

Cooralie

XLDnaute Nouveau
Re : VBA Automatisation de la création de 144 Graphiques

Ah voilà là ça marche :) J'espère que ça suffit à comprendre (dans les colonne ça va toujours de 0 à 180, pour 1, 2 3... jusque 12)
 

Pièces jointes

  • Classeur1.xlsx
    30.6 KB · Affichages: 79
  • Classeur1.xlsx
    30.6 KB · Affichages: 86
  • Classeur1.xlsx
    30.6 KB · Affichages: 90

Modeste geedee

XLDnaute Barbatruc
Re : VBA Automatisation de la création de 144 Graphiques

Bonsour®
Mais j'ai minimisé et zippé, malgré tout ça fait tjs 2,6 Mo, je ne comprends pas sur le forum c'est limité à 200 ko, comment je peux faire?

:rolleyes:
au regard de la façon dont EXCEL gére la mémoire, c'est une trés mauvaise idée de concevoir la duplication de144 graphiques !!

envisager la génération dynamique et à la demande de ces graphiques
enregistrer quelques uns des tes graphiques en tant que modèles , qui pourront ensuite etre appliqués lors de la génération dynamique.

voir cet article pour de nombreux exemples :
Making your dashboards interactive [Dashboard Essentials] | Chandoo.org - Learn Microsoft Excel Online
 

Cooralie

XLDnaute Nouveau
Re : VBA Automatisation de la création de 144 Graphiques

Bonjour Modeste geedee,

Je vous avoue ne pas avoir très bien compris votre message. Le but est d'obtenir une vue d'ensemble des 144 graphiques (d'ou l'utuilisation de graphiques en aires, plus visuels), il me les faut donc tous en même temps sur une seule feuille.

De plus je n'ai pour l'instant qu'un seul graphique puisque ma macro ne tourne pas, ce n'était donc pas la raison pour laquelle mon fichier était trop lourd.

Je ne comprends pas quelle démarche vous préconisez, et je ne suis pas sûre que vous ayez compris la mienne?
 

Cooralie

XLDnaute Nouveau
Re : VBA Automatisation de la création de 144 Graphiques

Bonjour,
Dans l'exemple, tu n'indiques pas où sont stockées tes données !
Au moins les 2 premières matrices horizontalement et verticalement
A+
plus

Mes plages de données sont placées dans la feuille ainsi:

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 ordonné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 ordonnées du graphe
Dim U As Long
U = 5 + (j - 1) * 186 + 180 'ligne
Dim V As Long
V = 1 + 3 * i ' colonne

c'est à dire que :
les plages de données sont placées toutes les 3 colonnes, à partir de la colonne D (ou 4) --> 1+3*i
Elles ont une hauteur de 180 valeurs à chaque fois et sont séparées de 5 lignes à chaque fois. Elles commencent donc toutes les 186 lignes, en partant de la ligne 5 --> 5+(j-1)*186

Donc en tout 144 plages de données de chacune 180 valeurs.

Je ne sais pas si c'est clair... :$ ?
 

MJ13

XLDnaute Barbatruc
Re : VBA Automatisation de la création de 144 Graphiques

Bonjour à tous

Tu peux essayer d'adapter un code de ce type. Par contre sur Mac, pas sur que cela fonctionne.

Juste une question: Sur Mac, as-tu l'enregistreur de macros :confused:.
 

Pièces jointes

  • Graph_Auto_MJ.xlsm
    35.3 KB · Affichages: 88

Discussions similaires

Réponses
17
Affichages
760

Statistiques des forums

Discussions
311 708
Messages
2 081 750
Membres
101 812
dernier inscrit
trufu