Couleur graphqiue anneau

Bonjour j'ai mi ce code pour définir les couleurs de mon graph anneau mais rien ne se passe.

Sub couleur()

Dim i As Byte

Dim X

Dim j As Integer

For j = 1 To Worksheets("Feuil1").ChartObjects.Count

With Worksheets("Feuil1").ChartObjects(j).Chart.SeriesCollection(1)

X = .XValues

For i = 1 To UBound(X)

Select Case X(i)

Case "1": .Points(i).Interior.Color = RGB(188, 55, 64)

Case "Pourcentage de l'interessement + abondement": .Points(i).Interior.Color = RGB(7, 214, 15)

Case "Pourcentage Rémunération variable": .Points(i).Interior.Color = RGB(53, 59, 215)

End Select

Next i

End With

Next j

ActiveWorkbook.Saved = True

End Sub

Pouvez-vous m'aider ?

Merci d'avance

Bonjour,

Pour mieux comprendre ton problème et ce que tu as essayé de faire, un fichier serait plus que bienvenu !

voici un exemple c'est un tableau test j'aimerais aussi faire une boucle pour avoir toujours la même couleur car je devrais générer plusieurs graphiques à la suite, c'est dans la macro couleur que vous trouverez le code en question

merci d'avance

S'il s'agit bien de modifier la couleur de remplissage selon le nom de la série, ça marche chez moi en utilisant la propriété :

.Points(i).Format.Fill.ForeColor.RGB

Le code complet :

Sub couleur()

Dim i As Byte, j As Integer, X As Variant

For j = 1 To Worksheets("Feuil1").ChartObjects.Count
    With Worksheets("Feuil1").ChartObjects(j).Chart.SeriesCollection(1)
        X = .XValues
        For i = 1 To UBound(X)
            Select Case X(i)
                Case "1": .Points(i).Format.Fill.ForeColor.RGB = RGB(38, 132, 187)
                Case "Pourcentage de l'interessement + abondement": .Points(i).Format.Fill.ForeColor.RGB = RGB(7, 14, 200)
                Case "Pourcentage Rémunération variable": .Points(i).Format.Fill.ForeColor.RGB = RGB(236, 159, 76)
            End Select
        Next i
    End With
Next j

End Sub

j'ai mis et mes graph couleur ne change toujours pas de couleur

Sub couleur()

Dim i As Byte, j As Integer, X As Variant

For j = 1 To Worksheets("Feuil1").ChartObjects.Count
    With Worksheets("Feuil1").ChartObjects(j).Chart.SeriesCollection(1)
        X = .XValues
        For i = 1 To UBound(X)
            Select Case X(i)
                Case "1": .Points(i).Format.Fill.ForeColor.RGB = RGB(38, 132, 187)
                Case "2": .Points(i).Format.Fill.ForeColor.RGB = RGB(7, 14, 200)
                Case "3": .Points(i).Format.Fill.ForeColor.RGB = RGB(236, 159, 76)
            End Select
        Next i
    End With
Next j

End Sub
7classeur2.xlsm (26.02 Ko)

.XValues correspond à la plage de nom des séries. Dans le cas où cette plage n'est pas renseignée, les noms qui apparaissent en légende sont les n° de chaque série. MAIS .XValues est VIDE, tu n'as donc pas de correspondance avec "1", "2", "3"...

En clair il faut une plage des X correctement renseignée.

Je t'invite à placer un espion sur la variable X et constater les valeurs qui y sont stockées lors d'une exécution pas à pas de ta macro avec F8.

Est ce que à la place de 1, 2 ou 3 je peux mettre des cases comme A1, A2, A3 ? et aussi non comment faire pour renseigner les X j'ai commencé VBA sur le tas il y a vraiment peu de temps.

Merci d'avance

Renseigner cette plage n'est pas une histoire de VBA...

Il te suffit de faire un clic droit sur ton graphique --> Sélectionner des données --> modifier "étiquettes de l'axe horizontal (abcisse)" --> Sélectionner la plage correspondante.

Tu peux aussi le faire série par série depuis le même menu ou dans la barre de formule en sélectionnant chaque série.

Est-ce que par exemple je peux faire

x = .XValues("A1:A3")

en gros definir ma plage de donnes directement dans la macro car je dois faire en sorte que tous les graphiques aient la même couleur

Est-ce que par exemple je peux faire

x = .XValues("A1:A3")

en gros definir ma plage de donnes directement dans la macro car je dois faire en sorte que tous les graphiques aient la même couleur

Ta macro fait en sorte que tous tes graphiques ont la même couleur, pour peu que cette plage soit déjà définie. Mais à priori, tu n'as pas besoin de VBA pour ça, il te suffit d'aller dans "Mise en page" et de choisir un thème de couleur qui te convient.

Pour définir ta plage dans ta macro, il faut que tu définisses XValues avant d'affecter cette plage à ta variable X. Voilà une proposition :

Sub couleur()

Dim i As Byte, j As Integer, X As Variant, F As Worksheet

Set F = Worksheets("Feuil1")
For j = 1 To F.ChartObjects.Count
    With F.ChartObjects(j).Chart.SeriesCollection(1)
        .XValues = F.Range("A1:A3") 'Affecte une plage à XValues
        X = .XValues
        For i = 1 To UBound(X)
            Select Case X(i)
                Case "1": .Points(i).Format.Fill.ForeColor.RGB = RGB(38, 132, 187)
                Case "2": .Points(i).Format.Fill.ForeColor.RGB = RGB(7, 14, 200)
                Case "3": .Points(i).Format.Fill.ForeColor.RGB = RGB(236, 159, 76)
            End Select
        Next i
    End With
Next j

End Sub

J'ai une erreur j'ai joint le fenetre et il me surligne ma macro en jaune à la ligne

 X = .XValues

surement à cause de la ligne précédente

.XValues = F.Range("A1:A3") 'Affecte une plage à XValues
probleme

Si tu l'as appliqué sur ton fichier exemple, je pense que le problème ne se situe pas dans VBA, c'est que A1:C1 correspond à ta plage de valeurs, et qu'affecter aussi cette plage en plage de nom doit générer une erreur...

Bonne nouvelle le programme s'exécute sans erreur par contre ca me change juste le nom dans la légende pas encore les couleurs, mais c'est deja ca !

Bonne nouvelle le programme s'exécute sans erreur par contre ca me change juste le nom dans la légende pas encore les couleurs, mais c'est deja ca !

Transmet le fichier sur lequel tu testes ça... Chez moi ça a fonctionné du 1er coup !

Après je suis sous 2016 je ne sais pas sous quelle version tu est et si ça a une quelconque incidence la dessus.

La couleur reste par défaut de base, même apres avoir supprimé les graphique et l'avoir refait, je précise c'est un graphique anneau au cas ou tu test sur d'autres modèles de graph.

5classeur2.xlsm (26.98 Ko)

Ça fonctionnait sur ton fichier, avec donc tes données et ton type de graphique...

Je suppose que le code VBA n'est pas de toi, et donc que tu maîtrises moyennement ce qu'il fait... C'est parfaitement normal que les couleurs de tes séries ne changent pas, puisqu'elles ne rentrent dans aucun cas de figure de ta macro !

Avant de continuer, je t'invite à faire 2 choses :

Mais à priori, tu n'as pas besoin de VBA pour ça, il te suffit d'aller dans "Mise en page" et de choisir un thème de couleur qui te convient.

Ceci rend à priori totalement inutile la macro, puisqu'un changement de thème prend effet sur tous les graphiques.

Je t'invite à placer un espion sur la variable X et constater les valeurs qui y sont stockées lors d'une exécution pas à pas de ta macro avec F8.

Pour comprendre pourquoi ton code ne fonctionne pas, VBA dispose de plusieurs outils. En faisant les actions ci-dessus, tu devrais comprendre ce qui ne va pas...

Ok je vais faire ca je communique mes résultats au plus vite merci !

Oui c'est une macro que j'ai prise sur internet, j'aimerais bien automatiser la chose pour les couleurs soient définies automatiquement car ce n'est qu'une partie d'une tache que je dois faire en gros les graphique seront dans une cellule à la suite et j'aimerais qu'ils adoptent tous les mêmes couleurs, dans ce cas alors comment faire pour que cela soit pris en compte dans ma macro.

Ca j'ai bien compris, je te laisse me revenir sur les 2 points précédents... Je dois m'absenter.

Bonjour yassyasss,

As-tu avancé sur le sujet ?

Rechercher des sujets similaires à "couleur graphqiue anneau"