Magic_Doctor
XLDnaute Barbatruc
Bonjour,
Dans ma feuille j'ai un "Label".
Je voudrais que la couleur de remplissage de celui-ci soit la même que celle d'une cellule.
Pour y parvenir, autant que faire se peut (...), j'ai bidouillé le truc suivant :
1/ je récupère, en code hexadécimal, la couleur de remplissage de la cellule :
Supposons que la cellule soit d'un abominable violet, le code sera :
HexaColor([B5]) = &DE2064
Ce code n'est apparemment pas compris pour "BackColor" du "Label". Il faut le transformer pour qu'il soit intelligible en : &HDE2064&
Pour y parvenir, je tente ceci :
- 1/ je transforme &DE2064 en &DE2064&
- 2/ j'intercale un "H" après le 1er "&"
Je vérifie si le "néo-code" est bien retranscrit en faisant un test :
[P30] = InsertionCaractère(HexaColor([B5]) & "&", "H", 2)
La cellule "P30" affiche bien le code normalement compris dans les propriétés du label en question, soit &HDE2064&.
Je suis content !
Maintenant, audacieusement, je tente :
Ça ne marche pas. Je ne suis pas content !
Comment faire en sorte pour que je redevienne content ?
Dans ma feuille j'ai un "Label".
Je voudrais que la couleur de remplissage de celui-ci soit la même que celle d'une cellule.
Pour y parvenir, autant que faire se peut (...), j'ai bidouillé le truc suivant :
1/ je récupère, en code hexadécimal, la couleur de remplissage de la cellule :
VB:
Function HexaColor(Target As Range, Optional fond As Integer) As String
'Renvoie le code hexadécimal d'une couleur
'Lone-wolf
'---- 0 ou absence du 2eme argument renvoie la couleur de remplissage
'---- tout autre nombre renvoie la couleur de la police
'---- renvoi la couleur par défaut hors Mise En Forme Conditionnelle
Application.Volatile
If fond = 0 Then
HexaColor = "&" & Application.Dec2Hex(Target.Interior.Color, 6)
Else
HexaColor = "&" & Application.Dec2Hex(Target.Font.Color, 6)
End If
End Function
HexaColor([B5]) = &DE2064
Ce code n'est apparemment pas compris pour "BackColor" du "Label". Il faut le transformer pour qu'il soit intelligible en : &HDE2064&
Pour y parvenir, je tente ceci :
- 1/ je transforme &DE2064 en &DE2064&
- 2/ j'intercale un "H" après le 1er "&"
VB:
Function InsertionCaractère(MaChaine As String, Insert As String, i As Byte) As String
'Insertion d'un caractère dans une chaîne
'- MaChaine = la chaîne dans laquelle on veut insérer le caractère
'- Insert = le caractère à insérer
'- i = la position dans la chaîne, en partant de la gauche, du caractère que l'on veut insérer
MaChaine = Left$(MaChaine, i - 1) & Insert & Mid$(MaChaine, i)
InsertionCaractère = MaChaine
End Function
[P30] = InsertionCaractère(HexaColor([B5]) & "&", "H", 2)
La cellule "P30" affiche bien le code normalement compris dans les propriétés du label en question, soit &HDE2064&.
Je suis content !
Maintenant, audacieusement, je tente :
VB:
With Worksheets("BTX").LabelmLparGr1
.BackColor = InsertionCaractère(HexaColor([B5]) & "&", "H", 2)
End With
Comment faire en sorte pour que je redevienne content ?