Graphique automatique et mise en forme [Résolu]

hannebea 6 Messages postés vendredi 22 septembre 2006Date d'inscription 16 janvier 2007 Dernière intervention - 15 janv. 2007 à 09:11 - Dernière réponse : hannebea 6 Messages postés vendredi 22 septembre 2006Date d'inscription 16 janvier 2007 Dernière intervention
- 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.

Sub Macro1()


Range("A2").Select
Selection.CurrentRegion.Select
données = Selection.Address
NomFeuille = ActiveSheet.Name




'Position et taille du graph
ActiveSheet.ChartObjects.Add(160, 325, 450, 150).Select
'(POSITION 100, 150,.........TAILLE 350, 200)
Application.CutCopyMode = False


    ActiveChart.ChartType = xlColumnStacked
    ActiveChart.SetSourceData Source:=Sheets(NomFeuille).Range(données), PlotBy:= _
        xlRows

End Sub

si vous avez une idée...
Merci beaucoup
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
hannebea 6 Messages postés vendredi 22 septembre 2006Date d'inscription 16 janvier 2007 Dernière intervention - 16 janv. 2007 à 15:17
3
Merci
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

Merci hannebea 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de hannebea
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 15 janv. 2007 à 17:03
0
Merci
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 ^^

Molenn
Commenter la réponse de Molenn
hannebea 6 Messages postés vendredi 22 septembre 2006Date d'inscription 16 janvier 2007 Dernière intervention - 16 janv. 2007 à 06:57
0
Merci
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
Commenter la réponse de hannebea
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 16 janv. 2007 à 09:55
0
Merci
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
Commenter la réponse de Molenn
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 16 janv. 2007 à 10:03
0
Merci
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
Commenter la réponse de Molenn
hannebea 6 Messages postés vendredi 22 septembre 2006Date d'inscription 16 janvier 2007 Dernière intervention - 16 janv. 2007 à 10:49
0
Merci
Je viens d'essayer ce que tu proposes mais ca bug...


Voici le code que j'ai deja:

Sub Macro1()
Range("A2").Select
Selection.CurrentRegion.Select
données = Selection.Address
nomfeuille = ActiveSheet.Name
'Position et taille du graph
ActiveSheet.ChartObjects.Add(100, 150, 350, 200).Select
'(POSITION 100, 150,.........TAILLE 350, 200)
Application.CutCopyMode = False


    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets(nomfeuille).Range(données), PlotBy:= _
        xlColumns
End Sub

Effectivement j'ajoute un graphique a chaque execution.
Voila ce que j'ai ajouter:

 NomGraphique = ActiveChart.Name
 ActiveSheet.ChartObjects("NomGraphique").Activate
    ActiveChart.ChartArea.Select
    ActiveChart.SeriesCollection(3).Select
    ActiveChart.SeriesCollection(3).ChartType = xlLineMarkers

mais il me donne un message d'erreur:
"L'indentificateur sous le curseur n'est pas reconnu"
mmm...tu sais ce que ca veux dire?
encore une idée?
Merci
Commenter la réponse de hannebea
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 16 janv. 2007 à 11:27
0
Merci
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

Molenn
Commenter la réponse de Molenn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.