XL 2010 VBA Graphique rechercher série spécifique + changer couleur

Superemi

XLDnaute Junior
Bonjour à tous, le forum,

Par vba, je souhaite :
- Savoir si une série existe en recherchant par son nom.
- Si elle existe, changer la couleur de la série.
J'ai mis le fichier en PJ.

Je n'arrive pas à reproduire la macro, j'ai pensé à un code du style :
Pour chaque série
Si Série = "Bien" Alors Série en vert
Si Série = "Acceptable" alors Série en Orange
Si série = "Mauvais" alors Série en rouge.

J'ai cherché un peu partout sans trouver ni parvenir à le faire.

Merci par avance de votre aide.
Cordialement,
Superemi.
 

Pièces jointes

  • Test.xlsm
    22.7 KB · Affichages: 32

Dranreb

XLDnaute Barbatruc
Bonjour.
Chez moi ça marche comme ça :
VB:
Sub Macro1()
Dim G As Chart
Set G = ActiveSheet.ChartObjects("Graphique 1").Chart
On Error Resume Next
G.SeriesCollection("Bien").Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
G.SeriesCollection("Acceptable").Format.Fill.ForeColor.RGB = RGB(226, 107, 10)
G.SeriesCollection("Mauvais").Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez comme ça :
VB:
Sub Macro1()
Dim O As ChartObject, G As Chart
On Error Resume Next
For Each O In ActiveSheet.ChartObjects
    Set G = O.Chart
    G.SeriesCollection("Bien").Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
    G.SeriesCollection("Acceptable").Format.Fill.ForeColor.RGB = RGB(226, 107, 10)
    G.SeriesCollection("Mauvais").Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
    Next O
End Sub[code]
 

Superemi

XLDnaute Junior
Bonjour à tous,

Décidemment les macros me résiste, j'ai à nouveau besoin de votre aide.
En plus de la superbe macro de Dranreb ci-dessus, il faut que toutes les étiquettes de données de tous les graphiques soient en gras et taille 16.
Je bloque sur .Points.

Merci de votre aide et de votre patience.

Superemi.
 

Superemi

XLDnaute Junior
Il m'indique Valeur=Hors du contexte, Type=Chart.
Mes compétences sont limitées là-dessus, je ne sais pas quoi faire de ces informations.
En fait je pensais adapter ton code comme ceci mais je sais pas comment faire toutes les étiquettes :

Code:
...
With G.SeriesCollection("Bien")
    .Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
    .Points(1).DataLabel.Format.TextFrame2.TextRange.Font.Bold = msoTrue
End With
 

Superemi

XLDnaute Junior
En fait même pour 1 seul graphique je n'arrive pas à mettre toutes les étiquettes de données en gras.
Actuellement j'ai ça mais ça ne change qu'une valeur en gras :
Code:
'ActiveSheet.ChartObjects("Graphique 1").Chart.SeriesCollection(1).Points(2).DataLabel.Format.TextFrame2.TextRange.Font.Bold = msoTrue

Merci de votre aide.
 

Dranreb

XLDnaute Barbatruc
De toute façon travaillez toujours avec G dans la boucle qui explore la collection ChartObjects de la feuille.
D'ailleurs ça peut permettre de trouver les propriétés à changer simplement en tapant G suivi d'un point, puisqu'elles sont alors suggérées dans une liste.
Sinon cliquez dans la marge grise gauche pour y installé un point d'arrêt dans la boucle, lancez, à l'arrêt déployez l'espion mis sur G pour y trouver les propriétés qui ont la valeur cherchée. Mettez les peut être d'abord un coup à la main pour pouvoir les y retrouver.
 

Superemi

XLDnaute Junior
Je m'en suis sorti de cette façon :
Code:
Dim O As ChartObject, G As Chart
On Error Resume Next
For Each O In ActiveSheet.ChartObjects
    Set G = O.Chart
   
    G.SeriesCollection("Bien").Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
    G.SeriesCollection("Acceptable").Format.Fill.ForeColor.RGB = RGB(226, 107, 10)
    G.SeriesCollection("Mauvais").Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
   
    For j = 1 To 3
        For i = 1 To 5
        G.SeriesCollection(j).Points(i).DataLabel.Format.TextFrame2.TextRange.Font.Bold = msoTrue
        G.SeriesCollection(j).Points(i).DataLabel.Format.TextFrame2.TextRange.Font.Size = 16
        Next i
    Next j
   
    Next O

Il y a peut-être plus 'propre'.
 

Discussions similaires

Statistiques des forums

Discussions
311 722
Messages
2 081 930
Membres
101 843
dernier inscrit
Thaly