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
| Sub test_dégradé_bycolor()
couleur1 = ThisWorkbook.Colors(5)
couleur2 = ThisWorkbook.Colors(38)
degradé_bi_color couleur1, couleur2, 20
End Sub
Function degradé_bi_color(couleur1, couleur2, pourcentage)
Dim R1, R2, G1, G2, B1, B2, signR, sgnB, sgnG, R, G, B
'fact représente le nombre de pas en fonction du pourcentage de dégradé demandé
Fact = Round(255 / (100 / pourcentage))
R1 = couleur1 Mod 256: R2 = couleur2 Mod 256
G1 = (couleur1 \ 256) Mod 256: G2 = (couleur2 \ 256) Mod 256
B1 = (couleur1 \ 256 \ 256) Mod 256: B2 = (couleur2 \ 256 \ 256) Mod 256
'on détermine le sens (positif ou négatif pour rejoindre r1 a r2: g1 a g2: b1 a b2)
SgnR = IIf(R1 < R2, 1, -1): sgnB = IIf(B1 < B2, 1, -1): sgnG = IIf(G1 < G2, 1, -1)
'on détermine le STEP (positif ou négatif) factR,factG,factB
factR = IIf(R1 < R2, (R2 - R1) / Fact, (R1 - R2) / Fact)
factG = IIf(G1 < G2, (G2 - G1) / Fact, (G1 - G2) / Fact)
factB = IIf(B1 < B2, (B2 - B1) / Fact, (B1 - B2) / Fact)
Do
' on applique factR et G et B dans le sens que l'on a déterminé plus haut
R = R1 + (SgnR * factR) * i
B = B1 + (sgnB * factB) * i
G = G1 + (sgnG * factG) * i
' on évite l'erreur pour R ou G ou B en dessous de zéro
R = IIf(R < 0, 0, R)
G = IIf(G < 0, 0, G)
B = IIf(B < 0, 0, B)
i = i + 1
Cells(i, 1).Interior.Color = RGB(R, G, B)
Loop Until R = R2 And G = G2 And B = B2
End Function |
Partager