Mise en couleur caractère à partir d'un code hexadécimal

Résolu/Fermé
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 - 7 févr. 2014 à 19:35
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 - 26 févr. 2014 à 16:11
Bonjour,

J'ai besoin des lumière des spécialistes Excel

Je désire me faire un tableau de couleurs sous Excel

J'ai donc 3 colonnes avec les intensités de Rouge, Vert, Bleu dont les valeurs vont de 00h à FFh (0 à 255)

Dans une autre colonne, j'ai un pattern composé de 8x le caractère 219 (DBh). Je désire colorier ce pattern de la couleur obtenue par l'intensité RVB définie dans les trois colonnes précédentes

Par Exemple, en colonne A, B et C j'ai les valeurs FF A5 et 00 (255 165 0), je désire que le pattern se trouve colorié en Orange qui est la couleur obtenue

Existe-t-il une formule excel me permettant de le faire ou faut il passer en VBA ?

Merci d'avance



A voir également:

4 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
7 févr. 2014 à 21:03
Bonjour,

ça sera en vba :
Sub couleurRVB()
    Dim lig As Long, derlig As Long
    Dim R As Long, V As Long, B As Long
    derlig = Cells(Rows.Count, 4).End(xlUp).Row
    For lig = 2 To derlig
        R = CLng("&h" & Cells(lig, 1))
        V = CLng("&h" & Cells(lig, 2))
        B = CLng("&h" & Cells(lig, 3))
        Cells(lig, 4).Interior.Color = RGB(R, V, B)
    Next lig
End Sub

https://www.cjoint.com/c/DBhvcefmYx9

Mais pas sûr qu'excel 2003 puisse retranscrire toute la palette, excel 2010 peut-être (à contrôler)

eric

1
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 1 499
7 févr. 2014 à 21:24
merci Eric, je vais tester ça tout de suite sur Excel 2010
0
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 1 499
Modifié par Miura564 le 7/02/2014 à 21:33
Dans le fichier que tu as joint, je vois que c'est la cellule qui a pris la couleur orange. (#FFA500)

je désirais mettre en couleur un texte ou mon pattern (########) de la couleur définie par le code hexa

DB (219) est le code Hexa (décimal) du caractère qui compose mon pattern. Une chaine composée de 8x le même caractère

EDIT : je vais être embetant jusqu'au bout (désolé) mais lorsque je modifie le code hexa, la modif ne se fait pas ?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
8 févr. 2014 à 00:49
lorsque je modifie le code hexa, la modif ne se fait pas ?
Ben non. Pourquoi je l'aurais fait si tu ne le demandes pas ? Il faut lancer la macro.

De ce que j'ai compris, sinon met un exemple complet du résultat de ce que tu veux :
Sub patternCouleur()
    Dim lig As Long, derlig As Long
    derlig = Cells(Rows.Count, 4).End(xlUp).Row
    For lig = 2 To derlig
        patternCouleurLig (lig)
    Next lig
End Sub

Sub patternCouleurLig(lig As Long)
    Dim s As String
    Dim R As Long, V As Long, B As Long
    R = CLng("&h" & Cells(lig, 1))
    V = CLng("&h" & Cells(lig, 2))
    B = CLng("&h" & Cells(lig, 3))
    s = String(8, Chr(CLng("&h" & Cells(lig, 4))))
    Application.EnableEvents = False
    Cells(lig, 5) = String(8, Chr(CLng("&h" & Cells(lig, 4))))
    Cells(lig, 5).Font.Color = RGB(R, V, B)
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Row = 1 Or Target.Column > 4 Then Exit Sub
    patternCouleurLig (Target.Row)
End Sub

https://www.cjoint.com/?DBiaU3QOBAT
La macro patternCouleur() traite toutes les lignes.
Si tu modifies une donnée en A:D le pattern se met à jour par appel de patternCouleurLig(lig).

eric
0
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 1 499
8 févr. 2014 à 02:49
Merci Eric pour ta réponse et ta patience...

visiblement je ne sais pas exprimer mon problème ou bien je ne sais pas utiliser les macros. Je n'ai pas encore réussi à utiliser cette deuxième version. D'ailleurs, comment je lance la macro ?

Voici un exemple de ce que j'aimerais obtenir :

> Essai de colorisation texte (Excel 2010)

Si je peux encore abuser, j'aimerais que la colorisation se fasse au fur et à mesure de la saisie si cela est possible et pas trop compliqué évidemment
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié par eriiic le 8/02/2014 à 11:16
D'ailleurs, comment je lance la macro ?
Comme toutes les autres macros...
De plus je t'avais mis des boutons 'test xxx', il suffit de cliquer dessus.
Et, comme demandé, une saisie en A:D met à jour les couleurs.
Il ne faut pas être timide devant un fichier...

Macro adaptée à ton fichier :
https://www.cjoint.com/c/DBikMh1sBtj
Je te laisse ajouter les pattern. Chez moi le code ASCII DB est le caractère Û.
Ajout non demandé : tu peux également saisir en A, B:D se mettront à jour.

eric


En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci
0
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 1 499
8 févr. 2014 à 11:26
Merci Eric...

ben justement j'ai utilisé les boutons mais sur mon excel, rien ne se passe...

DB est le code hexadécimal, si tu saisi ALT+219 tu auras le bon caractère

Bizarrement Excel fait la différence entre REPT(car(219);8) et REPT("#";8) Le dièse symbolisant le caractère 219 invisible sur CCM

enfin ce n'est qu'un détail... c'est pas le plus important..

Ah derme !! je ne peux pas ouvrir ton dernier fichier....
0
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 1 499
8 févr. 2014 à 11:35
j'ai enfin réussi à l'ouvrir mais j'obtiens un message "incompatibilité de type"... purée, j'en arrive à regretter Multiplan
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
8 févr. 2014 à 15:19
DB est le code hexadécimal, si tu saisi ALT+219 tu auras le bon caractère
d'accord, mais en vba on ne fait pas alt+219...
Sur toute table ascii on trouve DB="Û", c'est ainsi que vba le transcrit.
Entre nous la différence est mineure entre ton choix et colorer la cellule.
Pour régler ce pb : mettre le pattern désiré en J2 (cellule nommée 'Pattern', tu peux la déplacer où tu veux, le nom suivra) et vba le récupèrera ici.

Nouvelle version qui n'a rien à voir avec ton pb.
Formatage des saisies en A:D.
Tu peux saisir en minuscule ça sera converti en majuscule, ajout des 0 manquants, et du # pour W3C. Ex :
- si tu saisis "f" en B:D (RVB), tu obtiens "0F"
- si tu saisis "fff" en A (W3C), tu obtiens "#000FFF"

j'obtiens un message "incompatibilité de type"
1) Il faut préciser suite à quelle manip.
2) Où est l'erreur ? Procédure, ligne, expression surlignée.
3) Sur quelle version d'excel ? Sur 2010 je n'ai aucune erreur.

Re-teste sur la nouvelle version qu'on soit en phase :
https://www.cjoint.com/?DBipoVN6U7Y

eric
0
Miura564 Messages postés 13404 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 février 2015 1 499
8 févr. 2014 à 16:24
pour la table de caractères j'avais déjà vérifié et effectivement j'obtiens aussi ce Û. Chose bizarre, lorsque je saisi manuellement mon ALT+219 et que je cherche le code du caractère avec la formule =code() il me renvoie le code 63 ce qui correspond à un ?... c'est tout de même surprenant ces différences ? Est-ce dû à un bug d'Excel ??

pour le message "incompatibilité de type" je l'obtiens dès le lancement de la macro, en mode pas-à-pas il ne dépasse pas l'en-tête et s'arrête à la déclaration de variables.. peut-être un problème de paramétrage de mon Excel ?
je vais le tester sur une autre machine, en Excel 2003 et je te dirais ce qu'il en est..

il va vraiment falloir que je me penche sérieusement sur le cas du VBA, très différent du BASIC et du COBOL... ;-) (oui bon je sais c'est plus trop d'actualité)

cet apm je suis sur Excel 2003, je testerai en 2010 ce soir...
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
8 févr. 2014 à 17:26
Pour avoir ton caractère en vba il faudrait en unicode :
[A1] = ChrW(9608)
Mais bon, le pb est réglé, tu peux même changer de pattern facilement sans toucher le code maintenant.

Je viens de tester sur 2003, pas de soucis non plus.
A part les couleurs qui n'ont rien à voir comme je m'en doutais.

eric
0