Rapport de message :*
 

Re: couleur graphique

Titre du sujet : Re: couleur graphique
par myDearFriend! le 15/09/2009 22:52:23

Bonsoir djstroubi, le forum,

Bienvenue sur XLpages.com
Pas vraiment spécialiste en graphique Excel (ça se saurait ), je puis tout de même te proposer le code suivant (voir aussi pièce jointe) :

DANS LE MODULE DE CODE DE LA FEUILLE GRAPH
Option Explicit

Private Sub Chart_Activate()
'myDearFriend!  -  www.mdf-xlpages.com
Dim Plage As Range, R As Range
Dim G As ChartObject
Dim Sr As Series
    Application.ScreenUpdating = False
    Set Plage = Sheets("FCoul").Columns(1)
    For Each Sr In Charts(1).SeriesCollection
        If Sr.Name <> "" Then
            Set R = Plage.Find(Sr.Name, LookIn:=xlValues)
            If Not R Is Nothing Then
                Sr.ClearFormats
                With Sr.Interior
                    .ColorIndex = R.Interior.ColorIndex
                    .Pattern = xlSolid
                End With
            End If
        End If
    Next Sr
    For Each G In ActiveSheet.ChartObjects
        For Each Sr In G.Chart.SeriesCollection
            If Sr.Name <> "" Then
                Set R = Plage.Find(Sr.Name, LookIn:=xlValues)
                If Not R Is Nothing Then
                    Sr.ClearFormats
                    With Sr.Interior
                        .ColorIndex = R.Interior.ColorIndex
                        .Pattern = xlSolid
                    End With
                End If
            End If
        Next Sr
    Next G
    Application.ScreenUpdating = True
End Sub

Il conviendra également d'ajouter un nouvel onglet (que tu peux masquer en utilisation finale) nommé "FCoul".

Le principe est simple : dans l'onglet "FCoul", tu définis la liste des codes couleurs qui te conviennent et libellés (qualité de produits) associés.
Lorsque l'onglet GRAPH est activé par l'utilisateur, la macro va revisiter chaque série du graphique et lui donner la couleur souhaitée.

Le code est moyennement propre et demande sans doute à être optimisé.

Ci-joint ton classeur modifié en conséquence.

Cordialement,