Macro Formatting Graphiques
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:
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 !
1 pièce(s) jointe(s)
Preview mise en forme automatique des graphes
Pièce jointe 400756
Voilà à quoi ça ressemble : tu renseignes toutes les mises en forme puis tu lances la macro. L'utilisation d'un UserForm permettra de le faire dynamiquement.
Cela te conviendrait ?
Pour finaliser le truc j'en ai pour un moment par contre et je ne vais pas pouvoir m'y remettre tout de suite :/