Lorsque l’on utilise la fonction "HEX".
Exemple :
IntColor = ActiveCell.Intérior.Color
HexDigits = Hex(IntColor)
donne un format --> (BGR), pour la couleur rouge on aura « 0000FF »
ce qui veut dire --> le Format est inversé --> BGR
Pour avoir le format RGB
Format --> "FF 00 00"
Pour remédier à cet état, j’ai créé cette fonction.
La 1° fonction remet dans l’ordre pour avoir "RGB"
Cette première fonction utilise "HEX"
Ici « Color » valeur hexa , je complète les zéros manquant au début du composant.
De façon à obtenir un hexa exploitable.
La 2° fonction est différente , j’ai supprimé la fonction "HEX",
Et je traite directement.
La fonction traite directement le nombre long (le nombre encode la valeur RGB en un seul entier)
&HFF est une valeur hexadécimale équivalente à 255
La 3° fonction est identique à la deuxième, sauf tout est traité en hexa.
Ces trois fonctions donnent le même résultat.
Salutation.
Exemple :
IntColor = ActiveCell.Intérior.Color
HexDigits = Hex(IntColor)
donne un format --> (BGR), pour la couleur rouge on aura « 0000FF »
ce qui veut dire --> le Format est inversé --> BGR
Pour avoir le format RGB
Format --> "FF 00 00"
Pour remédier à cet état, j’ai créé cette fonction.
La 1° fonction remet dans l’ordre pour avoir "RGB"
VB:
'===================
Sub Test1_BGR_vers_RGB()
Dim Intcolor As Long
Intcolor = ActiveCell.Interior.Color
MsgBox "BGR = " & Hex(Intcolor) & Chr(10) _
& "RGB = " & BGRversRGB(Intcolor)
End Sub
'===================
Function BGRversRGB(ByVal Colorvalue As Long) As String
Dim Rouge As String, Vert As String, Bleu As String
Dim X As Integer, Color As String
Color = Hex(Colorvalue)
X = 6 - Len(Color)
Color = String(X, "0") & Color
Bleu = Left(Color, 2)
Vert = Mid(Color, 3, 2)
Rouge = Right(Color, 2)
BGRversRGB = Rouge & Vert & Bleu
End Function
'===================
Cette première fonction utilise "HEX"
Ici « Color » valeur hexa , je complète les zéros manquant au début du composant.
De façon à obtenir un hexa exploitable.
La 2° fonction est différente , j’ai supprimé la fonction "HEX",
Et je traite directement.
Code:
'===================
Sub Test2_Couleur()
Dim Intcolor As Long
Intcolor = ActiveCell.Interior.Color
MsgBox "BGR = " & Hex(Intcolor) & Chr(10) _
& "RGB = " & RGBversHex(Intcolor)
End Sub
'===================
Function RGBversHex(ByVal Colorvalue As Long) As String
Dim Rouge As Integer, Vert As Integer, Bleu As Integer
Rouge = Colorvalue And &HFF
Vert = (Colorvalue \ 256) And &HFF
Bleu = (Colorvalue \ 65536) And &HFF
RGBversHex = Right("0" & Hex(Rouge), 2) _
& Right("0" & Hex(Vert), 2) _
& Right("0" & Hex(Bleu), 2)
End Function
'===================
La fonction traite directement le nombre long (le nombre encode la valeur RGB en un seul entier)
&HFF est une valeur hexadécimale équivalente à 255
La 3° fonction est identique à la deuxième, sauf tout est traité en hexa.
Code:
'===================
Sub Test3_Couleur()
Dim Intcolor As Long
Intcolor = ActiveCell.Interior.Color
MsgBox "BGR = " & Hex(Intcolor) & Chr(10) _
& "RGB = " & RGB_Hex(Intcolor)
End Sub
'===================
Function RGB_Hex(ByVal Colorvalue As Long) As String
Dim Rouge As Integer, Vert As Integer, Bleu As Integer
Rouge = Colorvalue And &HFF
Vert = (Colorvalue \ &H100) And &HFF
Bleu = (Colorvalue \ &H10000) And &HFF
RGB_Hex = Right("0" & Hex(Rouge), 2) _
& Right("0" & Hex(Vert), 2) _
& Right("0" & Hex(Bleu), 2)
End Function
'===================
Ces trois fonctions donnent le même résultat.
Salutation.