Sub PaletteArcEnCiel()
Dim i As Integer, j As Integer, idx As Integer, k As Integer, R As Integer, G As Integer, B As Integer
ReDim TblR(56)
ReDim TblG(56)
ReDim TblB(56)
ReDim Tblrgb(56)
ThisWorkbook.Sheets.Add
Application.ScreenUpdating = False
[A1] = "Idx": [B1] = "Defaut": [c1] = "Dec": [D1] = "R": [E1] = "G": [F1] = "B": [G1] = "Hex": [H1] = "Arc-en-ciel": [I1] = "Dec": [J1] = "R": [K1] = "G": [L1] = "B": [M1] = "Hex"
For i = 1 To 7
For j = 1 To 8
idx = j + (8 * (i - 1)) ' calcul index de la palette
k = (j - 1) * 32
Select Case i
Case 2
TblR(idx) = 255: TblG(idx) = k: TblB(idx) = 0
Case 3
TblR(idx) = 255 - k: TblG(idx) = 255: TblB(idx) = 0
Case 4
TblR(idx) = 0: TblG(idx) = 255: TblB(idx) = k
Case 5
TblR(idx) = 0: TblG(idx) = 255 - k: TblB(idx) = 255
Case 6
TblR(idx) = k: TblG(idx) = 0: TblB(idx) = 255
Case 1
TblR(idx) = 255: TblG(idx) = 0: TblB(idx) = 255 - k
Case Else '---- de noir 0,0,0 àblanc 255,255,255)
TblR(idx) = Round(((j - 1) * 36.425), 0): TblG(idx) = TblR(idx): TblB(idx) = TblR(idx)
End Select
Tblrgb(idx) = RGB(TblR(idx), TblG(idx), TblB(idx))
With ActiveSheet
.Cells(1 + idx, 1).Value = idx
.Cells(1 + idx, 2).Interior.ColorIndex = idx
R = ThisWorkbook.Colors(idx) Mod 256
G = Int(ThisWorkbook.Colors(idx) / 256 ^ 1) Mod 256
B = Int(ThisWorkbook.Colors(idx) / 256 ^ 2) Mod 256
.Cells(1 + idx, 3).Value = ThisWorkbook.Colors(idx)
.Cells(1 + idx, 4).Value = R
.Cells(1 + idx, 5).Value = G
.Cells(1 + idx, 6).Value = B
.Cells(1 + idx, 7).Value = "&H" & Application.Dec2Hex(B, 2) & Application.Dec2Hex(G, 2) & Application.Dec2Hex(R, 2)
.Cells(1 + idx, 8).Interior.Color = Tblrgb(idx)
.Cells(1 + idx, 9).Value = Tblrgb(idx)
.Cells(1 + idx, 10).Value = TblR(idx)
.Cells(1 + idx, 11).Value = TblG(idx)
.Cells(1 + idx, 12).Value = TblB(idx)
.Cells(1 + idx, 13).Value = "&H" & Application.Dec2Hex(TblB(idx), 2) & Application.Dec2Hex(TblG(idx), 2) & Application.Dec2Hex(TblR(idx), 2)
End With
'********************************************
' affectation RGB à la palette
' ThisWorkbook.Colors(idx) = tblrgb(idx)
'********************************************
Next
Next
'********************************************
' restoration palette par defaut
' ThisWorkbook.ResetColors
'********************************************
Application.ScreenUpdating = True
End Sub