[VBA] récupérer la couleur RGB d'une police dans un cellule

F22Raptor

XLDnaute Occasionnel
Hello
Je voudrais récupérer (pour l'utiliser ensuite ailleurs) la couleur RGB des caractères dans une cellule.
J'ai essayé pas mal de combinaisons du type MsgBox Activecell.Font.Color.RGB mais sans succès ...

Une idée ? :)
 

Modeste geedee

XLDnaute Barbatruc
Re : [VBA] récupérer la couleur RGB d'une police dans un cellule

Bonsour®

heu... ??
simplement :
MsgBox Activecell.Font.Color

:confused:
 

F22Raptor

XLDnaute Occasionnel
Re : [VBA] récupérer la couleur RGB d'une police dans un cellule

J'obtiens un nombre du genre 16777215 pour la couleur blanche.
Il doit y avoir une correspondance pour obtenir XXX,YYY,ZZZ en RGB, mais je ne trouve pas :(
 

F22Raptor

XLDnaute Occasionnel
Re : [VBA] récupérer la couleur RGB d'une police dans un cellule

trouvé ! Il faut d'abord convertir en code hexadécimal :

Dim CouleurHexa, r, g, b
CouleurHexa = Hex(ActiveCell.Font.Color)


r = Val("&H" & Mid(CouleurHexa, 1, 2))

g = Val("&H" & Mid(CouleurHexa, 3, 2))

b = Val("&H" & Mid(CouleurHexa, 5, 2))

MsgBox r & vbTab & g & vbTab & b
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] récupérer la couleur RGB d'une police dans un cellule

Bonjour,

une autre approche, code de MichelXLD:)

Code:
Dim Couleur As Long, Rouge As Integer, Vert As Integer, Bleu As Integer
Couleur = ActiveCell.Font.Color
Rouge = Int(Couleur Mod 256)
Vert = Int((Couleur Mod 65536) / 256)
Bleu = Int(Couleur / 65536)
bon après midi
@+
 

F22Raptor

XLDnaute Occasionnel
Re : [VBA] récupérer la couleur RGB d'une police dans un cellule

Merci Pierrot : ça a l'air de mieux marcher que mon truc, qui inverse les RGB dans certains cas, semble t-il ...
 

Modeste geedee

XLDnaute Barbatruc
Re : [VBA] récupérer la couleur RGB d'une police dans un cellule

trouvé ! Il faut d'abord convertir en code hexadécimal :

Dim CouleurHexa, r, g, b
CouleurHexa = Hex(ActiveCell.Font.Color)
Plutôt
r = Val("&H" & Mid(CouleurHexa, 5, 2))
g = Val("&H" & Mid(CouleurHexa, 3, 2))
b = Val("&H" & Mid(CouleurHexa, 1, 2))

MsgBox r & vbTab & g & vbTab & b

Car la pondération hexadécimale met les poids faibles à droite (Rouge)
les poids lourds à gauche (bleu)
:rolleyes:
 

Discussions similaires


Haut Bas