Modifier les couleurs d'un graphique croisé dynamique par macro VBA

Bonjour à tous,
Tout est (presque) dans le titre. Je souhaiterai modifier les couleurs des histogrammes de mon graphique croisé dynamique à l'aide d'une macro VBA. Exemple: les valeurs affectées au champ "classe" A: en rouge, B: bleu, C: noir... J'ai enregistré un modèle de graphe que j'applique à chaque fois que j'utilise mon fichier (1/semaine) mais les effectifs de chaque classe différant à chaque fois, les couleurs ne correspondent jamais! D'où mon idée d'utiliser un code pour ajuster la couleur de remplissage et bordure de mon histogramme en fonction du label du champ "classe". Est ce possible? Merci par avance, je suis perdue!
ex dans mon fichier: toutes les barres des eleves de la classe A en rouge, ceux de la classe B en bleu...etc
En gros, il faudrait que le code dise pour chaque valeur affichée si le field "classe"
24ex3-tcd.xlsm (34.90 Ko)
de la donnée est "A" rempli l'histo en rouge....

Bonjour,

Oulah je penses que vous cherchez compliquer.

Cela ne suffit pas ? (J'ai juste modifié le TCD)

16ex3-tcd.xlsm (34.94 Ko)

Merci beaucoup pour ta réponse Valentin85.

Hélas, ce n'est pas aussi simple. J'avais fait comme toi au début mais je dois vraiment garder la configuration de mon tableau comme elle est et je dois utiliser le code couleur classe A: rouge, classe B: bleu, classe C: noir. Donc il me faut vraiment une macro qui colorie les barres selon la valeur du champ "classe" pour obtenir:

image

Je pense que ça doit passer par un truc du genre " if ActiveChart.PivotLayout.PivotTable.PivotFields("Classe").name="A" then Sheet.ChartObjects("Graphique 1").FullSeriesCollection(x)..Format.Fill.ForeColor.RGB = RGB(255, 0, 0)..." mais la difficulté est de faire correspondre toutes les données de la classe A à la bonne série (x)... c'est là que je bug car je suis nulle en VBA

Bonjour,

pas réussi à récupérer la classe, du coup je la récupère sur le nom :

Sub couleurTCD()
    Dim fsc As Object, nom
    For Each fsc In ActiveChart.FullSeriesCollection
        nom = Split(fsc.Name, "-")
        Select Case Trim(nom(0))
        Case "A"
            fsc.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
        Case "B"
            fsc.Format.Fill.ForeColor.RGB = RGB(0, 0, 255)
        Case "C"
            fsc.Format.Fill.ForeColor.RGB = RGB(0, 0, 0)
        Case Else
            MsgBox "Nouvelle classe non définie dans le code : " & Trim(nom(0))
        End Select
    Next fsc
End Sub

à voir
eric

Bonjour,

En rajoutant une colonne dans la base, Je sais pas si cela peux vous convenir, ca évite le VBA.

45ex3-tcd.xlsm (37.02 Ko)

si on ajuste la série de @Valentin85 (clicquez droite sur la série et puis ....)

image

Un grand merci à vous. C'est nickel.

Rechercher des sujets similaires à "modifier couleurs graphique croise dynamique macro vba"