hannebea
Messages postés6Date d'inscriptionvendredi 22 septembre 2006StatutMembreDernière intervention16 janvier 2007
-
15 janv. 2007 à 09:11
hannebea
Messages postés6Date d'inscriptionvendredi 22 septembre 2006StatutMembreDernière intervention16 janvier 2007
-
16 janv. 2007 à 15:17
Bonjour,
Voila j'ai un code pour mettreà jour des graphique automatiquement quand j'aoute des données.
j'aimerais personnaliser les graphiques obtenus police couleur... mais j ne sais pas comment faire car les graphiques sont numerotés....
voila ce que j'ai deja.
hannebea
Messages postés6Date d'inscriptionvendredi 22 septembre 2006StatutMembreDernière intervention16 janvier 2007 16 janv. 2007 à 15:17
Salut,
En fait je crois que j'ai trouvé la solution. En faisant Dim graph As Variant ensuite je peux utiliser l'enregistreur de macro et j'utilise graph.Chart au lieu de ActiveChart.
Merci beaucoup pour tes suggestions
Agathe
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 15 janv. 2007 à 17:03
Pour personnaliser les graphiques ? La solution, l'enregisteur de macro. Cela te donnera le nom de ton graphique et les syntaxes.
Exemple :
J'ai fait un histogramme avec 2 séries de données à l'aide de l'assistant.
Je veux modifier la couleur d'une des 2 séries de données (la 2ème)
Le code obtenu est
Range("B24").Activate
ActiveSheet.ChartObjects("Graphique 2").Activate
' = > Activation du graphique : son nom est Graphique 2
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(2).Select
' => Sélection de toutes les données de la série 2
ActiveChart.SeriesCollection(2).Points(2).Select
ActiveChart.SeriesCollection(2).Points(3).Select
ActiveChart.SeriesCollection(2).Points(4).Select
' => Sélection de la 4ème barre de la série 2 de mon histogramme
ActiveChart.SeriesCollection(1).Select
' => Sélection de toutes les données de la série 2
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
' => Redéfinition des contours de ma série 2
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
'=> Redéfinition des couleurs de ma série 2
De celà, on peut comprendre que
ActiveChart désigne le graphique sur lequel tu bosses.
SeriesCollection est un objet qui regroupe toutes les séries de données avec un index commençant à 1 (pour voir à quelle série cela correspond, tu peux faire un clic droit sur le graphique et faire Données source)
Points correspond à un objet regroupant toutes les données d'une même série, fonctionnant là aussi avec un index (le nb total de "points" est obtenu en utilisant la propriété Points.Count)
A partir de ces 3 principes, tu peux faire ce que tu veux sur la mise en forme du contenu de ton graphique. En plus, en consultant l'aide sur ces mots clés, tu auras des exemples un peu plus clair.
Donc, si on voulait juste modifier la couleur de la 3ème barre de la série 2 d'un histogramme, voilà ce que ça donnerait en donnant le plus de détails :
Workbooks("Nom du classeur").Worksheets("Nom de la feuille").ChartObjects("Graphique 1").Activate
ou alors
ActiveSheet.ChartObjects("Graphique 2").Activate
With ActiveChart.SeriesCollection(2).Points(3).Interior
.ColorIndex = 20
.Pattern = xlSolid
End With
Donc, pour la modification de titre, etc ... Même principe. Vive l'enregistreur de macro qu'on modifie après ^^
hannebea
Messages postés6Date d'inscriptionvendredi 22 septembre 2006StatutMembreDernière intervention16 janvier 2007 16 janv. 2007 à 06:57
Salut,
Bon tout d'abord merci beaucoup de t'occuper de mon cas ;-)...
Alors j'ai deja essayé l'enregistreur de macro mais j'ai toujours un problème. Je dois déclarer le nom du graphique: ChartObjects("Graphique 1") par exemple, et la ca coince parce que le nom du graphique s'incremente au fur et a mesure que j'execute la macro...et donc je ne sais pas comment affecter mes modifs pour le meme graphique (pour moi) mais qui sera different pour lui....
Je sais pas si je suis très claire....
Merci en tout cas
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 16 janv. 2007 à 09:55
Je ne comprends pas comment ton n° de graphique peut s'incrémenter.
Ton code créer un nouveau graphique ? Ou tu ne fais que modifier un graphique existant ? Parce que ce n'est pas tout à fait pareil.
Le plus simple, c'est encore que tu mettes le bout de code que tu as déjà fait.
Molenn
Vous n’avez pas trouvé la réponse que vous recherchez ?
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 16 janv. 2007 à 10:03
Je viens de voir un truc, si tu crées avec ton code un nouveau graphique.
A la fin du code de création, le Charts.Add ...
Tu peux récupérer le nom du graphique créer dans une variable en faisant :
NomGraphique = ActiveChart.Name
Affiche le avec un msgbox NomGraphique pour voir à quoi ça ressemble.
Et pour le reste du code, au lieu de faire
ChartObjects("Graphique 1")
Tu fais
ChartObjects(NomGraphique)
(Si ça ne fonctionne pas comme ça, il faudra récupérer le chiffre dans la variable et reconstruire le nom, un truc du style : ChartObjects("Graphique " & NumGraphique)
)
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 16 janv. 2007 à 11:27
Je vais essayer ton code chez moi quand j'aurai le temps, mais première chose, il ne faut pas mettre ta variable entre double quotes si tu veux que ça fonctionne.
Donc
ActiveSheet.ChartObjects(NomGraphique).Activate