XL 2013 Couleur Hex non correspondante ????

ZAKAO

XLDnaute Junior
Bonjour,

J'ai un soucis, je m'explique je veux écrire des couleurs en format Hex mais quand je le fais, elle ne correspondent pas à leur équivalent en RGB... Quelqu'un connait la raison ?

1677855402232.png
1677855596236.png


Le code :
VB:
Sub Couleur(Lieu As Range, a)
    Lieu.Interior.Color = a
End Sub

Sub test()
    Call Couleur(Range(Cells(1, 1), Cells(10, 1)), &HDCE6F1)
    Call Couleur(Range(Cells(1, 2), Cells(10, 2)), RGB(220, 230, 241))
End Sub

Je vous remercie pour votre aide.

Cordialement,
ZAKAO
 

Pièces jointes

  • Couleurs.xlsm
    13.4 KB · Affichages: 3
Solution
Bonjour,

Sub test()
Call Couleur(Range(Cells(1, 1), Cells(10, 1)), &HDCE6F1)
Call Couleur(Range(Cells(1, 2), Cells(10, 2)), RGB(220, 230, 241))
End Sub
Tu as inversé les composantes Rouge et Bleue. ;)

&HDCE6F1 = RGB(241,230,220)
&HF1CEDC = RGB(220,230,241)

La calculatrice de Windows 10 est très utile pour ce genre de chose puisqu'elle affiche une valeur en même temps en HEX, DEC, OCT et BIN. ;)

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Sub test()
Call Couleur(Range(Cells(1, 1), Cells(10, 1)), &HDCE6F1)
Call Couleur(Range(Cells(1, 2), Cells(10, 2)), RGB(220, 230, 241))
End Sub
Tu as inversé les composantes Rouge et Bleue. ;)

&HDCE6F1 = RGB(241,230,220)
&HF1CEDC = RGB(220,230,241)

La calculatrice de Windows 10 est très utile pour ce genre de chose puisqu'elle affiche une valeur en même temps en HEX, DEC, OCT et BIN. ;)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonjour
et oui le format hex inverse le R et le B j'ai ma fonction couleur excel to html qui en l'adaptant un peu pourrait faire l'affaire

démonstration
VB:
Sub test()
Dim complet As String

'testez avec les  4 couleurs
'coul = vbRed
'coul = vbGreen
'coul = vbBlue
coul = vbMagenta

coulhex = Hex(coul)
complet = Right("000000" & coulhex, 6)
converti = "&H" & complet
str0 = Right("000000" & Hex(coul), 6): R = Right(str0, 2): G = Mid(str0, 3, 2): B = Left(str0, 2)
  


MsgBox coul & vbCrLf & coulhex & vbCrLf & complet & vbCrLf & _
"complet reconverti cidessous" & vbCrLf & converti & vbCrLf & _
"R en hex = " & R & vbCrLf & _
"G en hex = " & G & vbCrLf & _
"B en hex = " & B & vbCrLf & _
"R en long = " & Val("&H" & R) & vbCrLf & _
"G en long = " & Val("&H" & G) & vbCrLf & _
"B en long = " & Val("&H" & B)

End Sub

1677954542083.png


on vois bien que le format complet en hex inverse le rouge et le bleu
on teste avec le rose (magenta) donc le max de rouge et de bleu
1677954624821.png


ma fonction perso couleur html
Code:
Sub test2()
MsgBox coul_XL_to_coul_HTMLX(vbMagenta)
End Sub

Function coul_XL_to_coul_HTMLX(couleur)
'fonction HTMLCOLOR ---> By Patricktoulon
    Dim str0 As String, strf As String
    str0 = Right("000000" & Hex(couleur), 6): strf = Right(str0, 2) & Mid(str0, 3, 2) & Left(str0, 2)
    coul_XL_to_coul_HTMLX = "#" & strf & ""
End Function
elle me donne la couleur au format html
1677954749382.png



et si je l'adapte un peu elle me rendra le R G B
VB:
Sub test3()
Dim R&, G&, B&
coul_XL_to_RGB vbMagenta, R, G, B
MsgBox "RGB (" & Join(Array(R, G, B), " , ") & ")"
End Sub

Function coul_XL_to_RGB(couleur, R, G, B)
'fonction HTMLCOLOR ---> By Patricktoulon
     Dim str0 As String
    str0 = Right("000000" & Hex(couleur), 6): R = Val("&H" & Right(str0, 2)): G = Val("&H" & Mid(str0, 3, 2)): B = Val("&H" & Left(str0, 2))
 End Function
1677954865931.png


c'est pas compliqué la base c'est le right 6 de "000000 & hex(unecouleur)
r c'est les deux de droite
g c'est les deux du milieu
b c'est les deux de gauche

tout simplement ;)
 

ZAKAO

XLDnaute Junior
bonjour
et oui le format hex inverse le R et le B j'ai ma fonction couleur excel to html qui en l'adaptant un peu pourrait faire l'affaire

démonstration
VB:
Sub test()
Dim complet As String

'testez avec les  4 couleurs
'coul = vbRed
'coul = vbGreen
'coul = vbBlue
coul = vbMagenta

coulhex = Hex(coul)
complet = Right("000000" & coulhex, 6)
converti = "&H" & complet
str0 = Right("000000" & Hex(coul), 6): R = Right(str0, 2): G = Mid(str0, 3, 2): B = Left(str0, 2)
 


MsgBox coul & vbCrLf & coulhex & vbCrLf & complet & vbCrLf & _
"complet reconverti cidessous" & vbCrLf & converti & vbCrLf & _
"R en hex = " & R & vbCrLf & _
"G en hex = " & G & vbCrLf & _
"B en hex = " & B & vbCrLf & _
"R en long = " & Val("&H" & R) & vbCrLf & _
"G en long = " & Val("&H" & G) & vbCrLf & _
"B en long = " & Val("&H" & B)

End Sub

Regarde la pièce jointe 1164877

on vois bien que le format complet en hex inverse le rouge et le bleu
on teste avec le rose (magenta) donc le max de rouge et de bleu
Regarde la pièce jointe 1164878

ma fonction perso couleur html
Code:
Sub test2()
MsgBox coul_XL_to_coul_HTMLX(vbMagenta)
End Sub

Function coul_XL_to_coul_HTMLX(couleur)
'fonction HTMLCOLOR ---> By Patricktoulon
    Dim str0 As String, strf As String
    str0 = Right("000000" & Hex(couleur), 6): strf = Right(str0, 2) & Mid(str0, 3, 2) & Left(str0, 2)
    coul_XL_to_coul_HTMLX = "#" & strf & ""
End Function
elle me donne la couleur au format html
Regarde la pièce jointe 1164879


et si je l'adapte un peu elle me rendra le R G B
VB:
Sub test3()
Dim R&, G&, B&
coul_XL_to_RGB vbMagenta, R, G, B
MsgBox "RGB (" & Join(Array(R, G, B), " , ") & ")"
End Sub

Function coul_XL_to_RGB(couleur, R, G, B)
'fonction HTMLCOLOR ---> By Patricktoulon
     Dim str0 As String
    str0 = Right("000000" & Hex(couleur), 6): R = Val("&H" & Right(str0, 2)): G = Val("&H" & Mid(str0, 3, 2)): B = Val("&H" & Left(str0, 2))
 End Function
Regarde la pièce jointe 1164880

c'est pas compliqué la base c'est le right 6 de "000000 & hex(unecouleur)
r c'est les deux de droite
g c'est les deux du milieu
b c'est les deux de gauche

tout simplement ;)
Bonjour @patricktoulon, c'est vraiment super ça aussi.

Vos MsgBox sont bien plus beaux que les miens...

Merci tout le monde pour les réponses :)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 796
Membres
101 817
dernier inscrit
carvajal