bonjur
Voici ce que je te propose
Au moment de colorier
Tu crée trois table rouge vert et bleue avec les valeurs que tu souhaites
tu utiliseras la valeur du nom (1,2,3,4) pour indexer ces tables et affecter le rgb à ton shape
tu peux utilser ce principe pour les autres mises en couleur
Sub Histo(Fl As String, L As Single, T As Single, W As Single, H As Single, Nom As String, Txt As String, lg As Long, Optional cl As Long = 0)
Dim sh As Object, lig As Long, i As Long, couleur As Double
rcouleurs = Array(0, 0, 250, 0, 0)
vcouleurs = Array(0, 0, 0, 250, 90)
bcouleurs = Array(0, 250, 0, 0, 125)
With Sheets(Fl)
couleur = .Range("A" & lg).Interior.Color
Set sh = .Shapes.AddShape(msoShapeRoundedRectangle, L, T, W, H)
With sh
.Fill.ForeColor.RGB = RGB(rcouleurs(CDbl(Nom)), vcouleurs(CDbl(Nom)), bcouleurs(CDbl(Nom)))
.Line.ForeColor.RGB = RGB(160, 160, 160)
'.Fill.ForeColor.RGB = IIf(cl = 0 Or cl = 16777215, couleur, cl)
'.Line.ForeColor.RGB = RGB(160, 160, 160)
.Fill.Transparency = 0.3
.Name = "_" & Nom
.TextFrame2.HorizontalAnchor = msoAnchorCenter
With .TextFrame2.TextRange.Characters
.Text = Txt
.Font.Size = 9
.Font.Fill.ForeColor.RGB = &H353535
End With
.OnAction = "Fiche"
End With
End With
End Sub