Sub CouleurCellule()
Dim ValMin As Double, ValMoy As Double, ValMax As Double
Dim CouleurMin As Double, CouleurMoy As Double, CouleurMax As Double
Dim R, V, B, RMin, VMin, BMin, RMax, VMax, BMax
ValMin = Application.Min(Range("MaPlage"))
ValMax = Application.Max(Range("MaPlage"))
ValMoy = (ValMax - ValMin) / 2
If ActiveSheet.Range("MaPlage").FormatConditions(1).ColorScaleCriteria(2).Type = 5 Then ValMoy = Application.Median(Range("MaPlage"))
CouleurMin = Range("MaPlage").FormatConditions(1).ColorScaleCriteria(1).FormatColor.Color
CouleurMoy = Range("MaPlage").FormatConditions(1).ColorScaleCriteria(2).FormatColor.Color
CouleurMax = Range("MaPlage").FormatConditions(1).ColorScaleCriteria(3).FormatColor.Color
RMin = Int(CouleurMin Mod 256)
VMin = Int((CouleurMin Mod 65536) / 256)
BMin = Int(CouleurMin / 65536)
RMoy = Int(CouleurMoy Mod 256)
VMoy = Int((CouleurMoy Mod 65536) / 256)
BMoy = Int(CouleurMoy / 65536)
RMax = Int(CouleurMax Mod 256)
VMax = Int((CouleurMax Mod 65536) / 256)
BMax = Int(CouleurMax / 65536)
If ActiveCell.Value <= ValMoy Then
R = RMin + (ActiveCell.Value - ValMin) / (ValMoy - ValMin) * (RMoy - RMin)
V = VMin + (ActiveCell.Value - ValMin) / (ValMoy - ValMin) * (VMoy - VMin)
B = BMin + (ActiveCell.Value - ValMin) / (ValMoy - ValMin) * (BMoy - BMin)
Else
R = RMoy + (ActiveCell.Value - ValMoy) / (ValMax - ValMoy) * (RMax - RMoy)
V = VMoy + (ActiveCell.Value - ValMoy) / (ValMax - ValMoy) * (VMax - VMoy)
B = BMoy + (ActiveCell.Value - ValMoy) / (ValMax - ValMoy) * (BMax - BMoy)
End If
MsgBox "RGB : " & R & " " & B & " " & V & vbLf & "Color : " & RGB(R, V, B)
ActiveCell.Offset(0, 1).Interior.Color = RGB(R, V, B)
End Sub