Mise en couleur caractère à partir d'un code hexadécimal [Résolu/Fermé]

Signaler
Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
-
Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
-
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



4 réponses

Messages postés
23360
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
10 avril 2020
6 028
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 81396 internautes nous ont dit merci ce mois-ci

Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
1 253
merci Eric, je vais tester ça tout de suite sur Excel 2010
Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
1 253
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 ?
Messages postés
23360
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
10 avril 2020
6 028
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
Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
1 253
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
Messages postés
23360
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
10 avril 2020
6 028
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
Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
1 253
Bonsoir,

je relance le topic car en ayant rajouter des lignes à mon tableau d'origine, la macro ne se lance plus et me sort à chaque fois le message « /!\ Incompatibilité de type »

Qu'est-ce qui peut me provoquer cette erreur ?

voici les liens pour :

> le feuille Excel 2010
> la macro « Colorisation »

merci d'avance de l'aide apportée....
Messages postés
23360
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
10 avril 2020
6 028
Bonjour,

Je n'ai pas l'erreur « /!\ Incompatibilité de type ».
Quoi saisir et où pour l'avoir ?

Sinon il manque la cellule nommée Pattern, je l'ai remise en J1.
https://www.cjoint.com/?DBAhDrUo4bq

eric

edit:
Vu, tu commences à la ligne 5 et plus à la ligne 2.
Donc :
Sub patternCouleur()
Dim lig As Long, derlig As Long
derlig = Cells(Rows.Count, 4).End(xlUp).Row
For lig = 5 To derlig
patternCouleurLig (lig)
Next lig
End Sub

eric
Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
1 253
encore une fois un grand merci eriiic, problème réglé... il faut vraiment que je me mette au VBA....

un conseil ou un site pour l'apprendre ?
Messages postés
23360
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
10 avril 2020
6 028
Un cours complet intéressant : Cours VBA
eric
Messages postés
16383
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 février 2015
1 253
merci pour le lien, c'est déjà téléchargé... je vais étudier tout cela de près...

utilises tu une méthode de programmation pour développer tes applis en VBA ?