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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
Function texte_en_degradé(texte As String, Optional sfontname As Variant = "Calibri", Optional couleur1 As Variant = 0, Optional couleur2 As Variant = 0, Optional couleur3 As Variant = 0, Optional couleur4 As Variant = 0, Optional couleur5 As Variant = 0, Optional couleur6 As Variant = 0, Optional couleur7 As Variant = 0)
Dim nbVal As Integer, R1 As Integer, V1 As Integer, B1 As Integer, R2 As Integer, V2 As Integer, B2 As Integer, difR As Integer, difV As Integer, difB As Integer
Dim longeur As Long, nbcolor As Long
Cells(1, 1) = texte
Cells(1, 1).Font.Name = sfontname
'"""""""""""""""""""""""""""""""""""""""""
' methode all to RGB "
' Rouge = Int(Couleur Mod 256) "
' Vert = Int((Couleur Mod 65536) / 256) "
'Bleu = Int(Couleur / 65536) "
'"""""""""""""""""""""""""""""""""""""""""
'couleur 1 : RGB(R1, V1, B1)
R1 = Int(couleur1 Mod 256)
V1 = Int((couleur1 Mod 65536) / 256)
B1 = Int(couleur1 / 65536)
nbcolor = 1
'""""""""""""""""""""""""""""""""""""""""""""""
'couleur 2 : RGB(R2, V2, B2)
R2 = Int(couleur2 Mod 256)
V2 = Int((couleur2 Mod 65536) / 256)
B2 = Int(couleur2 / 65536)
If couleur2 <> 0 Then nbcolor = nbcolor + 1
'""""""""""""""""""""""""""""""""""""""""""""""
'couleur 3 : RGB(R3, V3, B3)
R3 = Int(couleur3 Mod 256)
V3 = Int((couleur3 Mod 65536) / 256)
B3 = Int(couleur3 / 65536)
If couleur3 <> 0 Then nbcolor = nbcolor + 1
'""""""""""""""""""""""""""""""""""""""""""""""
'couleur 4 : RGB(R4, V4, B4)
R4 = Int(couleur4 Mod 256)
V4 = Int((couleur4 Mod 65536) / 256)
B4 = Int(couleur4 / 65536)
If couleur4 <> 0 Then nbcolor = nbcolor + 1
'""""""""""""""""""""""""""""""""""""""""""""""
'couleur 5 : RGB(R5, V5, B5)
R5 = Int(couleur5 Mod 256)
V5 = Int((couleur5 Mod 65536) / 256)
B5 = Int(couleur5 / 65536)
If couleur5 <> 0 Then nbcolor = nbcolor + 1
'""""""""""""""""""""""""""""""""""""""""""""""
'couleur 6 : RGB(R5, V5, B5)
R6 = Int(couleur6 Mod 256)
V6 = Int((couleur6 Mod 65536) / 256)
B6 = Int(couleur6 / 65536)
If couleur6 <> 0 Then nbcolor = nbcolor + 1
'""""""""""""""""""""""""""""""""""""""""""""""
'couleur 7 : RGB(R5, V5, B5)
R7 = Int(couleur7 Mod 256)
V7 = Int((couleur7 Mod 65536) / 256)
B7 = Int(couleur7 / 65536)
If couleur7 <> 0 Then nbcolor = nbcolor + 1
'définition du nombre de teintes à obtenir entre la couleur 1 et 2 ET 3 ET 4
longeur = Int(Len(Cells(1, 1)) / nbcolor) 'ON DIVISE LE TEXTE PAR LE NOMBRE DE COULEUR
'longeur etant le nombre de caracteres qui subiront le dégradé de deux couleur
nbVal = Int(Len(Cells(1, 1))) '<-- la cellule A1 contient le mot "developpez" par exemple
'calcul du différentiel entre chaque teinte pour chaque canal de couleur
'coloration de chaque lettre du mot contenu en A1
For i = 1 To nbVal
If i <= longeur * 1 Then
difR = Int((R1 - R2) / longeur)
difV = Int((V1 - V2) / longeur)
difB = Int((B1 - B2) / longeur)
R1 = R1 + -difR
V1 = V1 + -difV
B1 = B1 + -difB
Cells(1, 1).Characters(Start:=i, Length:=1).Font.Color = RGB(R1, V1, B1)
ElseIf i >= longeur * 1 And i <= longeur * 2 Then
difR = Int((R1 - R3) / longeur)
difV = Int((V1 - V3) / longeur)
difB = Int((B1 - B3) / longeur)
R1 = R1 + -difR
V1 = V1 + -difV
B1 = B1 + -difB
Cells(1, 1).Characters(Start:=i, Length:=1).Font.Color = RGB(R1, V1, B1)
ElseIf i >= longeur * 2 And i <= longeur * 3 Then
difR = Int((R1 - R4) / longeur)
difV = Int((V1 - V4) / longeur)
difB = Int((B1 - B4) / longeur)
R1 = R1 + -difR
V1 = V1 + -difV
B1 = B1 + -difB
Cells(1, 1).Characters(Start:=i, Length:=1).Font.Color = RGB(R1, V1, B1)
ElseIf i >= longeur * 3 Then
difR = Int((R1 - R5) / longeur)
difV = Int((V1 - V5) / longeur)
difB = Int((B1 - B5) / longeur)
R1 = R1 + -difR
V1 = V1 + -difV
B1 = B1 + -difB
Cells(1, 1).Characters(Start:=i, Length:=1).Font.Color = RGB(R1, V1, B1)
ElseIf i >= longeur * 4 Then
difR = Int((R1 - R6) / longeur)
difV = Int((V1 - V6) / longeur)
difB = Int((B1 - B6) / longeur)
R1 = R1 + -difR
V1 = V1 + -difV
B1 = B1 + -difB
Cells(1, 1).Characters(Start:=i, Length:=1).Font.Color = RGB(R1, V1, B1)
ElseIf i >= longeur * 5 Then
difR = Int((R1 - R7) / longeur)
difV = Int((V1 - V7) / longeur)
difB = Int((B1 - B7) / longeur)
R1 = R1 + -difR
V1 = V1 + -difV
B1 = B1 + -difB
Cells(1, 1).Characters(Start:=i, Length:=1).Font.Color = RGB(R1, V1, B1)
End If
Next
End Function |
Partager