Bonjour,

Je suis en train de développer une macro qui génère des tableau de bord automatiquement à partir d'une masque.
La macro permet de calculer, à partir de plusieurs base de données, des moyennes, Effectifs, Pourcentage Rang etc...

Pour cela j'ai créé un masque avec 4 onglets.
- Premier onglet : La maquette du TDB. Avec les cellules, Formes (Ellipse, rectangle etc), Zone de texte, graphique qui doivent récupérer les valeurs.
- Deuxième onglet : Le paramétrage des Cellules, Formes et Zone de texte (Dans quelle base, quelle variable, quelle sorte de calcul).
- Troisième onglet : Les graphiques à modalité fixe (Expl : Pourcentage Homme/Femme). Les graphiques fixe créé dans le premier onglet doivent être alimenté par cet onglet.
- Quatrième onglet : Les graphiques à modalité variable (Expl : Les agences d'une région). Ce sont des graphique dont le nombre de modalité varie selon une variable filtre (Expl : Région).

J'arrive parfaitement à alimenter mes Cellules, Formes, Zone de texte, Graphique.
Pour cela pas de problème.

Pour les graphique à modalité fixe j'arrive à modifier la couleur des points des série ainsi que leurs étiquettes (Datalabel).
Pour les graphique à modalité variable j'arrive, dans certain cas, à modifier les couleurs des points des séries mais pas les étiquettes.

Voici les graphique que j'obtiens :
Nom : Capture.JPG
Affichages : 1670
Taille : 94,3 Ko

Comme vous le voyez les graphiques à 2 modalités fonctionnent bien (Couleur barre et étiquette).
Pour les 3 graphiques à modalité variable (les 3 du bas), j'arrive à modifier les couleurs des barres de 2 des 3 graphiques (Ne fonctionne pas avec celui en gris), mais pas les étiquettes.

Voici mon code pour les graphiques à modalité fixe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
'Mets les couleurs aux barres et aux étiquettes
                    If Workbooks(NWb).Sheets(P3).Cells(Val(a(1)), 22) <> "" Then 'Si ETIQUETTE ou BARRE
                        a2 = Split(Workbooks(NWb).Sheets(P3).Cells(Val(a(1)), 3), "_") 'Coupe le nom du graph pour récupérer le num de la série
                        Workbooks(NWb).Sheets(P1).ChartObjects(a2(0)).Activate
                        ActiveChart.SeriesCollection(Workbooks(NWb).Sheets(P3).Cells(Val(a(1)) - a2(1), 2).Value).Select 'Sélectionne la série
                        ActiveChart.SeriesCollection(Workbooks(NWb).Sheets(P3).Cells(Val(a(1)) - a2(1), 2).Value).Points(a2(1)).Select 'Sélectionne le point
                            If Workbooks(NWb).Sheets(P3).Cells(Val(a(1)), 22) = "BARRE" Then selection.Interior.Color = FONCTION.RVB(Workbooks(NWb).Sheets(P3).Cells(Val(a(1)), 23)) 'Couleur Barre
                            If Workbooks(NWb).Sheets(P3).Cells(Val(a(1)), 22) = "ETIQUETTE" Then
                            selection.DataLabel.Interior.Color = FONCTION.RVB(Workbooks(NWb).Sheets(P3).Cells(Val(a(1)), 23)) 'Couleur Etiquette
                            selection.DataLabel.Font.Color = FONCTION.RVBTEXT(Workbooks(NWb).Sheets(P3).Cells(Val(a(1)), 23)) 'Couleur text
                            End If
                    End If
Voici mon code pour les graphiques à modalité variable :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Workbooks(NWb).Sheets(P1).ChartObjects(Workbooks(NWb).Sheets(P4).Cells(i, 3).Value).Activate
        ActiveChart.PlotArea.Select
        ActiveChart.ChartArea.Select
        ActiveChart.SetSourceData Source:=Workbooks(NWb).Sheets(P4).Range("A" & i & ":B" & Workbooks(NWb).Sheets(P4).Cells(i, 3).End(xlDown).Row - 2), PlotBy:=xlColumns
        'Mets les couleurs aux barres et aux étiquettes
        For i_COUL = i + 1 To Workbooks(NWb).Sheets(P4).Cells(i, 3).End(xlDown).Row - 2 'Parcours les modalités du graphique
            If Workbooks(NWb).Sheets(P4).Cells(i_COUL, 24) = "OK" Then
                ActiveChart.SeriesCollection(Workbooks(NWb).Sheets(P4).Cells(i, 2).Value).Select 'Sélectionne la série
                ActiveChart.SeriesCollection(Workbooks(NWb).Sheets(P4).Cells(i, 2).Value).Points(i_COUL - i).Select 'Sélectionne le point
                If Workbooks(NWb).Sheets(P4).Cells(i, 23) = "BARRE" Then selection.Interior.Color = FONCTION.RVB(Workbooks(NWb).Sheets(P4).Cells(i_COUL, 24)) 'Couleur Barre
                If Workbooks(NWb).Sheets(P4).Cells(i_COUL, 23) = "ETIQUETTE" Then
                'selection.DataLabels.Select
                'selection.Format.Fill.ForeColor.RGB = FONCTION.RVB(Workbooks(NWb).Sheets(P4).Cells(i_COUL, 24)) 'Couleur ETIQUETTE
                'selection.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = FONCTION.RVBTEXT(Workbooks(NWb).Sheets(P4).Cells(i_COUL, 24)) 'Couleur TEXT
                selection.DataLabel.Interior.Color = FONCTION.RVB(Workbooks(NWb).Sheets(P4).Cells(i_COUL, 24)) 'Couleur ETIQUETTE
                selection.DataLabel.Font.Color = FONCTION.RVBTEXT(Workbooks(NWb).Sheets(P4).Cells(i_COUL, 24)) 'Couleur TEXT
                End If
            End If
        Next i_COUL
Pour les graphiques à modalité variable je dois d'abord actualiser la source avant de changer la couleur de chaque point.

Je ne suis pas à l'aise avec les graphiques, du coup je bloque.

Merci de votre aide.