Bonjour à tous!

J'ai rédigé un petit code tout simple qui me permet d'harmoniser le format de mes graphiques sur Excel.

Le code se présente tel que suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub chart_format()
 
Dim WSh As Worksheet
Dim i, NbChart As Integer
 
For Each WSh In ThisWorkbook.Worksheets
 
WSh.Activate
NbChart = ActiveSheet.ChartObjects.Count
 
For i = 1 To NbChart
    With ActiveSheet.ChartObjects(i).Chart
 
         If .SeriesCollection.Count = 1 Then
        .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(132, 199, 37)
        ElseIf .SeriesCollection.Count = 2 Then
        .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(132, 199, 37)
        .SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(191, 191, 191)
        ElseIf .SeriesCollection.Count = 3 Then
        .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(132, 199, 37)
        .SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(191, 191, 191)
        .SeriesCollection(3).Format.Fill.ForeColor.RGB = RGB(127, 127, 127)
        End If 
 
        .Axes(xlValue).TickLabels.NumberFormat = "0"
        .ChartGroups(1).GapWidth = 70
        .ChartGroups(1).Overlap = 0
        .ChartTitle.Format.TextFrame2.TextRange.Font.Size = 14
        .ChartTitle.Format.TextFrame2.TextRange.Font.Name = "Calibri(Body)"
        .ChartTitle.Format.TextFrame2.TextRange.Font.Bold = msoTrue
        .ChartArea.Border.LineStyle = xlNone
        .ChartArea.Format.Fill.Visible = msoFalse
        .PlotArea.Format.Fill.Visible = msoFalse
        .ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 0, 71)
    End With
Next i
 
Next WSh
 
End Sub
Mon souci se situe au niveau de la boucle If ... Then ... End If (en rouge ci-dessus).

Pour l'instant, je procède de la sorte : si mon graph n'a qu'une seule série, alors cette série est colorée en vert (132, 199, 37) ; s'il en a deux, alors la première est colorée en vert et la seconde en gris clair (191, 191, 191) ; et enfin s'il en a trois, alors la première est en vert, la deuxième en gris clair et la dernière en gris foncé (127, 127, 127).

Je pense que ce n'est probablement pas la meilleure facon de procéder, d'une part, mais mon vrai problème vient du fait que ce code ne répond pas à mon besoin. En effet, je cherche à colorer en vert la serie ayant le total le plus élevé et en gris foncé celle ayant le total le moins élevé. Savez-vous si cela est possible ? Et si c'est le cas, auriez-vous quelques pistes pour me mettre sur la voie ?

Merci beaucoup par avance !