couleur graphique
#1
Aspirant XLPages

Inscription: 15/09/2009

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 15-09-2009 12h47
Bonjour,

j'ai un problème avec les couleurs de mon graphique. Je voudrais avoir une couleur fixe par qualité de produits sur trois graphique mais vu qu'ils ne sont jamais dans le même ordre la couleurs change.

J'ai mis un fichier joint pour que cela soit plus explicite.

merci d'avance
Pièce jointe:
zip couleur graph.zip   [ Taille: 33.00 Ko - Téléchargements: 561 ]
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 15-09-2009 22h52
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,
Pièce jointe:
zip PourDjstroubi.zip   [ Taille: 36.29 Ko - Téléchargements: 478 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#3
Aspirant XLPages

Inscription: 15/09/2009

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 16-09-2009 10h49
Merci beaucoup Didier
c'est tous ce qu'il me fallait

Hors Ligne
Rapport   Haut 

Re: couleur graphique
#4
Aspirant XLPages

Inscription: 15/09/2009

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 30-09-2009 15h57
Bonjour dider, le forum,

je réactive ma question parce que j'ai découvert des anomalies dans mon fichier. Au niveau du code que tu m'avait parvenu (mdf)  et que je remercie d'ailleurs, il n'est pas actif sur tous les graphiques chose que je viens de découvrir en testant mon fichier. 
De plus il va fonctionner sur deux donnés puis ensuite il ne fonctionne plus.

je vous met l'intégralité de mon fichier avec le lien suivant parce qu'il est trop volumineux pour pouvoir le mettre en pièce jointe 

http://www.cijoint.fr/cjlink.php?file=cj200909/cijmvqz6Fi.xls

j'espère que vous aller pouvoir m'aider 

cordialement

djstroubi
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#5
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 30-09-2009 22h48
Bonsoir djstroubi, le forum,

T'aider, moi je veux bien, mais franchement, il faudrait que tu y mettes un peu du tiens aussi

Peux-tu nous expliquer EXACTEMENT où est le problème ? Un exemple concret et clair : tel onglet, tel graph, il devrait y avoir telle couleur, mais ce n'est pas la bonne.... ce n'est quand même pas compliquer à expliquer, non ?
Par ailleurs, tu fournis un classeur avec 18 onglets et 5 modules de code... était-ce vraiment utile de nous fournir tout ça pour aider à résoudre ton problème ?

Pour éviter à tous de jouer aux devinettes, un classeur épuré à l'essentiel du problème (ce qui permet entre autre d'éviter le recours aux sites Ci-joint.com pas vraiment bien accueilli ici) ainsi qu'une véritable explication seraient les bienvenus.

Juste en passant, pour ton info, "Délacto" qu'on retrouve dans l'onglet FCoul et "délacto" qu'on semble retrouver dans tes graphs, ce n'est pas la même chose... peut-être que ton problème vient déjà de là !

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#6
Aspirant XLPages

Inscription: 15/09/2009

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 01-10-2009 11h07
Bonjour mdf, le forum,

j'ai regarder tout mon fichier pour voir si j'avias des erreurs et effectivement j'avias quelques erreurs de saisis dans mes formules.

Cependant quand j'ai plusieurs pages de graphiques, le graphique AMPACK ne  réagit pas au code couleur et c'est assez étrange.
Par exemple dans le fichier que je t'ai mis la page "graph jeudi" fonctionne bien tandis que pour la page "graph vendredi" les couleurs pour le graphique "ampack" ne sont respectées. Les trois graphiques devraient être composés des même couleurs avec le même ordre de succession comme dans la feuille "graph jeudi".

De plus je sais que je ne suis plus dans le bon post mais pour le problème des étiquettes c'est sur ces graphiques aussi.

Quand les couleurs sont respectées les étiquettes de données disparaissent.
Ex: dans la feuille "graph vendredi" sur le graphique ampack les étiquettes de données sont présentes et restent tandis que pour les autres graphiques lorsque je les insère elles disparaissent.

encore un grand merci de prendre du temps

cordialement

djstroubi

Pièce jointe:
zip couleur.zip   [ Taille: 51.06 Ko - Téléchargements: 517 ]
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#7
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 01-10-2009 20h17
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...






Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#8
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 01-10-2009 20h42
Re,

Citation :
djstroubi a écrit :
...
De plus je sais que je ne suis plus dans le bon post mais pour le problème des étiquettes c'est sur ces graphiques aussi.

Quand les couleurs sont respectées les étiquettes de données disparaissent.
Ex: dans la feuille "graph vendredi" sur le graphique ampack les étiquettes de données sont présentes et restent tandis que pour les autres graphiques lorsque je les insère elles disparaissent.
...

Ok, je n'avais pas compris le problème... cette disparition d'étiquette est dûe au traitement VBA appliqué.

Remplace le code que je te propose ci-dessus par celui-ci (toujours dans le ThisWorkbook) et ce problème devrait aussi être résolu :

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
                    Sr.ApplyDataLabels ShowSeriesName:=True
                    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
                        Sr.ApplyDataLabels ShowSeriesName:=True
                        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
(je clos l'autre fil de discussions sur ce problème spécifique du coup)

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#9
Aspirant XLPages

Inscription: 15/09/2009

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 02-10-2009 12h48

Bonjour mdf, le forum,

Le code marche parfaitement je t'en remercie.

Dernière petite question. Si je réalise des étiquettes de données personalisées de type =lundi!B4 que j'insère dans l'étiquette de donnée après avoir cliquez deux fois dessus
Je pense que le fait qu'il y a le code fait disparaître cette formule au détriment de l'étiquette de données de base.
Est ce qu'il y a une solution à ce problème

Encore merci

cordialement
Hors Ligne
Rapport   Haut 

Re: couleur graphique
#10
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 02-10-2009 19h44
Bonsoir djstroubi,

Dans ce cas, peux-tu essayer en supprimant les lignes :
Sr.ClearFormats
qui apparaissent 2 fois dans la dernière procédure que je présente plus haut.

Si ça ne fonctionne pas (et seulement si ), il va falloir m'en dire plus car l'exemple que tu donnes : "=lundi!B4" correspond justement à un nom de série tel que je les ai fait ajouter automatiquement dans les étiquettes du graphique. Quelles valeurs veux-tu y voir ?

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes