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.
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.