Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - Changer les couleurs de series sur graphs

  • Initiateur de la discussion Initiateur de la discussion livinne
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

livinne

Guest
Bonjour a tous,

Tout d'abord je vous prie de bien vouloir m'excuser pour l'absence d'accents, je travaille sur un clavier QWERTY.
Je travaille sur un projet pour lequel je tente de faire concorder les couleurs des differents graphiques de ma feuille de calcul via VBA, sans succes.

J'aurai besoin que ma macro mette mes graphiques en forme afin que la zone 1 soit systematiquement representee en rouge dans tous mes graphs, que la zone 2 soit en bleu... Selon les couleurs definies dans une feuille separee.

Je vais tenter de vous mettre un exemple en PJ.

Pourriez-vous m'aider?

Merci d'avance!
Regarde la pièce jointe Trial.xlsx
 

Pièces jointes

Re : VBA - Changer les couleurs de series sur graphs

Bonsoir livinne et bienvenue sur XLD 🙂,

Un essai dans le fichier joint.

Le tableau des correspondances zones <-> couleurs a été lègèrement modifié. La couleur appliquée à chaque zone est la couleur de fond de la cellule où se trouve le nom de la zone.

Le code est dans module1:
VB:
Sub macroCOULBarre()
Dim i&, j&, k&, Texte$, xrg As Range, sh As Worksheet


  Set sh = Sheets("Codescouleurindex")
  ActiveSheet.ChartObjects("Chart 3").Activate
  With ActiveChart
    For j = 1 To .SeriesCollection.Count
      With .SeriesCollection(j)
        Texte = .Name
        For k = 2 To 9999
          If Len(sh.Cells(k, "a")) = 0 Then Exit For
          If LCase(Texte) Like "*" & LCase(sh.Cells(k, "a")) & "*" Then
            .Format.Fill.ForeColor.RGB = sh.Cells(k, "a").Interior.Color
            Exit For
          End If
        Next k
      End With
    Next j
  End With
  Range("j25").Activate
End Sub


Sub macroCOULSecteur()
Dim i&, j&, k&, Texte$, xrg As Range, sh As Worksheet
  
  Set sh = Sheets("Codescouleurindex")
  ActiveSheet.ChartObjects("Chart 1").Activate
  With ActiveChart.SeriesCollection(1)
    .ApplyDataLabels
    .DataLabels.ShowSeriesName = True
    .DataLabels.ShowCategoryName = True
    For i = 1 To .Points.Count
      Texte = .Points(i).DataLabel.Text
      For k = 2 To 9999
        If Len(sh.Cells(k, "a")) = 0 Then Exit For
        If LCase(Texte) Like "*" & LCase(sh.Cells(k, "a")) & "*" Then
          .Points(i).Format.Fill.ForeColor.RGB = sh.Cells(k, "a").Interior.Color
          Exit For
        End If
      Next k
    Next i
    .DataLabels.ShowSeriesName = False
    .DataLabels.ShowCategoryName = False
    .DataLabels.ShowValue = False
  End With
  Range("a16").Activate
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

C
Réponses
7
Affichages
2 K
clj.bordas
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…