Choix de couleur série de donnée en VBA

Bonjour au forum,

Il y a de ça quelques mois, Jean-Eric de ce forum m'a aidé à faire (enfin, a fait plutôt...) un fichier pour générer un graphique via un TCD et via plusieurs macros (cf. fichier joint).

Bien que le fichier fonctionne parfaitement, j'aurais besoin d'une petite amélioration concernant la couleur des séries de données générées :

Je souhaiterais que lorsque le graphique est généré, la série de donnée "Produit détruit" soit de couleur rouge, celle de "Mauvaise gestion de l'entreposage" en bleu, celle de "Problème de DUV" en orange et celle de "Entreposage non retiré" en vert.

Sauriez-vous comment modifier son code pour y arriver ?

Un tout grand merci

Nico.

46nrev74-v2.xlsm (50.53 Ko)

Bonjour,

A voir

65nrev74-v2.xlsm (45.82 Ko)

Bonjour M12,

Je n'ai pas remarqué de différence dans le fichier que tu as envoyé

Lorsque l'on clique sur le bouton de commande "Consolider" de la feuille "TCD", le graphique "GCD" généré reprend ses couleurs par défaut.

Je m'étais peut-être mal exprimé, mais c'est lorsque l'on génère un nouveau graphique via ce bouton consolider que j'aimerais ces nouvelles couleurs.

Re,

Bon, j'ai trouvé une solution,

Je pense que tu doit savoir comment changer les couleurs des barres.

Un fois les couleurs changées

Clic droit - enregistrer comme modèle

Developpeur - enregistrer une macro

Création des outlis GCD

Modifier le type de graphique

Modéle

Choisir le modéle que tu viens de créer

Développeur

Arrêter la macro

Tu sélectionnes la ligne de code que tu places juste avant le END SUB de la macro de la feuille TCD et tu sauvegarde

Normalement les couleurs resteront même après Consolidation

Bonjour,

Essaie en copiant la partie surlignée du code ci-dessous en lieu et place :

 wb.Charts.Add After:=Worksheets(Worksheets.Count), Count:=1
    Set objChart = ActiveSheet
    Set rngChart = pt.TableRange2

    With objChart
        .SetSourceData rngChart
        .Name = "GCD"
        .ChartType = xlColumnClustered
      .FullSeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(196, 215, 155)
        .FullSeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(149, 179, 215)
        .FullSeriesCollection(3).Format.Fill.ForeColor.RGB = RGB(250, 191, 143)
        .FullSeriesCollection(4).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
    End With

A te relire.

Cdlt.

Bonjour,

@M12, merci, ta solution est intéressante et je vais garder ça sous le coude si ce n'est pas possible par modification du code

@Jean-Eric, merci de te re-pencher sur ce fichier Malheureusement, ta solution ne fonctionne pas, j'ai une erreur "Erreur de compilation - Membre de méthode ou de données introuvable" avec .FullSeriesCollection de surligné

Bonjour à tous

Bizarre

J'ai testé la solution de Jean Eric (que je salue) et chez moi (excel 2013), c'est tout bon

C'est effectivement étrange, j'ai testé plusieurs fois et toujours ce message d'erreur...

Je suis sous Excel 2007, le problème pourrait-il venir de là ?

Bonjour,

Avec l'enregistreur de macros, modifie la couleur de la première série de ton graphique et envoie le code enregistré.

Cdlt.

Bonjour Jean-Eric,

Voici le code généré par l'enregistreur de macro :

Sub Modifcouleur()
'
' Modifcouleur Macro
'

'
    ActiveSheet.ChartObjects("Graphique 1").Activate
    ActiveChart.SeriesCollection(4).Select
    ActiveSheet.ChartObjects("Graphique 1").Activate
End Sub

Bonjour,

Et le changement de couleur, il est où ?

Cdlt.

Pas sûr d'avoir saisi ta question mais : sur la 1ère série de donnée, c'est à dire "Produit détruit".

Bonjour,

J'aimerai que tu enregistres le processus de sélection de la première série du graphique, du changement de couleur, etc...

Et que tu renvoies le code VBA enregisté.

Cdlt.

Bonjour Jean-Eric,

J'ai relancer un enregistrement de macro comme tu le souhaites mais le code est strictement le même que celui que je t'ai envoyé précédemment...

Lorsque le graphique est généré, je débute l'enregistreur de macros, je sélectionne la série de donnée "Produit détruit" et je clique droit dessus, je modifie la couleur, clique sur OK puis j'arrête l'enregistreur de macros.

C'est bien cela que tu souhaites ?

Merci.

Re,

J'ai trouvé la solution, il suffit de modifier

.FullSeriesCollection(4).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)

par

.SeriesCollection(4).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)

Merci beaucoup pour ton aide !

Nico.

Re,

Je rencontre du coup un autre petit problème :

Si une des séries n'est pas représentée dans mon graphique (par exemple "Problème de DUV", j'ai une erreur avec ce code :

 .SeriesCollection("Entreposage non retiré").Format.Fill.ForeColor.RGB = RGB(237, 127, 16)
        .SeriesCollection("Mauvaise gestion de l'entreposage").Format.Fill.ForeColor.RGB = RGB(0, 0, 255)
        .SeriesCollection("Problème de DUV").Format.Fill.ForeColor.RGB = RGB(102, 0, 153)
        .SeriesCollection("Produit détruit").Format.Fill.ForeColor.RGB = RGB(255, 0, 0)

Cela semble assez logique étant donné que la série "Problème de DUV" n'existe pas...

Existe t-il alors un moyen de vérifier la présence de chaque série de donnée ?

Exemple : Si la série de connée "Problème de DUV" est présente, alors : .SeriesCollection("Problème de DUV").Format.Fill.ForeColor.RGB = RGB(102, 0, 153)

Bonjour,

Essaie ainsi :

On Error Resume Next
.SeriesCollection("Entreposage non retiré").Format.Fill.ForeColor.RGB = RGB(237, 127, 16)
.SeriesCollection("Mauvaise gestion de l'entreposage").Format.Fill.ForeColor.RGB = RGB(0, 0, 255)
.SeriesCollection("Problème de DUV").Format.Fill.ForeColor.RGB = RGB(102, 0, 153)
.SeriesCollection("Produit détruit").Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
On Error GoTo 0

C'est parfait Jean-Eric, merci beaucoup !!

Rechercher des sujets similaires à "choix couleur serie donnee vba"