Couleur des segments suivant une variable dans un histogramme empilé

Bonjour à tous,

J'utilise un fichier excel pour faire des analyses au travail (YAMAZUMI)

Dans mon fichier, sur la première feuille, je saisie le type d'opération ( VA / NVA / PERTE) et en face le temps associé, le tout pour plusieurs postes de travail

Sur la seconde feuille des graphiques sont créés (histogrammes empilés) , mais les couleurs des segments sont aléatoires, et la lecture du graphique est très compliqué.

Est ce qu'il est possible d'attribuer une couleur pour chaque segment de l'histogramme ( VA / NVA / PERTE). Il ne faut pas regrouper les segments par type d'opération.

Pour être plus clair, tout les segemts "VA" doivent-être en VERT, les "NVA" en JAUNE, et les "PERTE" en ROUGE.

Je me débrouille dans excel, mais je suis loin d'être un expert en macro, et d'après ce que j'ai pu voir/comprendre, il faut certainement passer par là.

En PJ mon fichier.

Est ce que vous pouvez m'aiguillez ?

Cordialement.

25yamazumi-process.xlsx (238.50 Ko)

Bonsoir FACT14

J'espère avoir compris ton problème...🤔

Je te propose effectivement de faire appel à la programmation VBA avec le code suivant :

Option Explicit
Sub ColorSeries()
    Const cVALabel = "VA"
    Const cNVALabel = "NVA"
    Const cWasteLabel = "Waste"

    Dim oChart As Chart
    Dim oSerie As Series
    Dim oPoint As Point
    Dim oFormat As ChartFormat

    Dim i As Integer
    Dim iType As Integer
    Dim sName As String

    'We refer embedded Chart
    Set oChart = ThisWorkbook.Worksheets("Yamazumi Chart").ChartObjects(1).Chart
    'Loop throught Chart Series
    For i = 1 To oChart.SeriesCollection.Count
        'We refer the Serie
        Set oSerie = oChart.SeriesCollection(i)
        'We get serie'name
        sName = oSerie.Name

        'We determine the type of the name
        If InStr(1, sName, cWasteLabel) > 0 Then    'If name contain "Waste"
            iType = 3
        ElseIf InStr(1, sName, cNVALabel) > 0 Then  'If name contain "NVA"
            iType = 2
        ElseIf InStr(1, sName, cVALabel) Then       'If name contain "VA"
            iType = 1
        Else
            iType = 0
        End If

        'We refer the chartFormat of the Serie
        Set oFormat = oSerie.Format
        'We change the color of the bloc depending type
        Select Case iType
            Case 1
                oFormat.Fill.ForeColor.RGB = RGB(0, 255, 0)
            Case 2
                oFormat.Fill.ForeColor.RGB = RGB(224, 192, 0)
            Case 3
                oFormat.Fill.ForeColor.RGB = RGB(255, 0, 0)
            Case Else
        End Select

    Next

End Sub

Pour déclencher ce code, j'ai inséré un bouton dans la feuille "Yamazumi Chart".

Je joins le classeur de test.

A ta disposition pour d'éventuels éclaircissements...

Je te suggère également

de consulter le document traitant de la programmation VBA des graphiques sur ce site : Manipulation des graphiques par VBA

Merci GVIALLES.

GENIAL !

C'est exactement ce que je cherchais à faire.

Je vais maintenant essayer de "comprendre" le code, pour "apprendre", et lire Manipulation des graphiques par VBA

Encore merci.

Rechercher des sujets similaires à "couleur segments suivant variable histogramme empile"