Création rapide (automatisée) de graphique
Bonjour,
J'utilise des tableaux extrêmement volumineux sous Excel (du genre plusieurs milliers de lignes et des centaines de colonnes, le tout sous plusieurs onglets).
Ce sont tout simplement des stats. Et j'ai besoin de créer des graphiques pour une partie des lignes.
Problème 1: je suis obligé de passer par Excel.
Problème 2: je ne peux pas me servir de tableau croisés dynamiques, ayant une présentation particulière à respecter.
Problème 3: je ne fais pas de VBA (donc gros problème).
Donc je cherche à créer automatiquement un graphique.
J'ai enregistré mon modèle de "format", donc ça, c'est bon.
En revanche, en passant par l'enregistreur de Macro, les graphiques qui vont être créés quand j'utilise le raccourci seront toujours le même et unique graphique.
Ma méthode: je sélectionne la ligne / les lignes pour faire mon graphique. Là, je lance la macro (ici Ctrl+W). Et le graphique est créé dans l'onglet "graphique".
Pas de chance, donc, vu que n'importe quelle ligne me fait l'équivalent d'un copier coller du graphique. En plus j'ai un bug.
Voilà le code:
Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+Maj+G
'
Charts.Add
ActiveChart.ApplyCustomType ChartType:=xlUserDefined, TypeName:="DCPP_EST"
ActiveChart.SetSourceData Source:=Sheets("DCPP EST Global").Range("A7:M7"), _
PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Graph"
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
ActiveSheet.Shapes("Graphique 8").IncrementLeft -123#
ActiveSheet.Shapes("Graphique 8").IncrementTop 129#
ActiveSheet.ChartObjects("Graphique 8").Activate
End SubJe suis sur Excel 2000.
Merci d'avance, si quelqu'un peut m'aider, ça m'évitera de créer un bon millier de graphiques à la main :/
Cordialement,
Edit
J'oubliais, je ne peux hélas pas joindre de fichier (données de mon entreprise.)
-- 28 Mai 2010, 10:49 --
Si j'ai tout compris (vu que je programme un peu sur un autre langage), je dois remplacer:
ActiveChart.SetSourceData Source:=Sheets("DCPP EST Global").Range("A7:M7"), _
PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Graph"Par quelque chose du genre:
ActiveChart.SetSourceData Source:=Sheets("OngletDeLaSelectionEnCours").Range("PlageEnCours"), _
PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="AttribuerUnNom"Ma question plus précise donc c'est: comment déclarer les "variables" que sont OngletDeLaSelectionEnCours, PlageEnCours et AttribuerUnNom?
Merci d'avance.
Cordialement,
-- 28 Mai 2010, 10:50 --
Up: message édité avec des précisions. Merci d'avance pour votre aide.
Bonjour,
Problème 2: je ne peux pas me servir de tableau croisés dynamiques, ayant une présentation particulière à respecter.
Peut-être peux-tu quand même créer un TCD sur une autre feuille, indépendamment de la présentation à respecter:
une base
un tableau de présentation lié à la base
un TCD lié à la base
Tes graphiques seraient trés facile à faire ensuite.
Amicalement,
Elfi