Rapport de message :*
 

Re: couleur graphique

Titre du sujet : Re: couleur graphique
par myDearFriend! le 01/10/2009 20:17:45

Bonsoir djstroubi,

Le problème vient simplement de l'expression :
For Each Sr In Charts(1).SeriesCollection
Dans le classeur exemple que tu as joint, Charts(1) fait toujours référence à ton "Graph jeudi" (même si tu mets le code dans le module de code de la feuille "Graph vendredi" ).
Pour celui de vendredi, tu aurais dû mettre Charts(2).
En bref, la collection Charts contient l'ensemble des feuilles de type Graph de ton classeur.


Cela dit, par souci de simplification et aussi d'optimisation, je te propose ceci
:

- Supprimer toutes les procédures "Private Sub Chart_Activate()" que tu as insérées dans chaque module de code des feuilles graphiques.
- Remplacer cet ensemble par l'unique procédure ci-dessous, à placer cette fois dans le module de code de l'objet ThisWorkbook :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'myDearFriend!  -  www.mdf-xlpages.com
Dim Plage As Range, R As Range
Dim G As ChartObject
Dim Sr As Series
    If TypeName(Sh) = "Chart" Then
        Application.ScreenUpdating = False
        Set Plage = Sheets("FCoul").Columns(1)
        For Each Sr In ActiveChart.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 ActiveChart.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 If
End Sub

Ca allègera d'autant ton classeur

Cordialement,

Nb : concernant l'autre fil avec le problème d'étiquette, je regarderai si je peux te trouver une soluce... mais je ne suis pas un spécialiste en la matière...