colorer des cellules avec le rvb de leur contenu

flocon

XLDnaute Nouveau
bonjour

Je découvre depuis peu une version récente d'excel à laquelle je ne suis pas habituée.

Je voudrais savoir s'il pourrait exister un moyen de colorer des cellules d'un fichier excel grâce à une partie du texte (code RVB) contenu dans les cellules.

Pour être plus claire j'aurais par exemple une cellule avec "rvb(255,0,255) magenta" par exemple et je voudrais que la cellule prenne précisément cette couleur.
Si une autre cellule a le texte "rvb(255,255,255) noir" il faudrait qu'elle se mette en noir
et ainsi de suite.

C'est pour faire un petit exposé sur les couleurs mais il est assez fastidieux de colorer les cellules une à une.

Merci
 

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Un exemple avec une macro VBA
VB:
Sub Macro1()
Dim C As Range
Dim R As Integer, G As Integer, B As Integer
Set C = Range("A1")
C.NumberFormat = "@"
C.Value = "255,0,255"
R = 1 * Split(C.Text, ",")(0)
G = 1 * Split(C.Text, ",")(1)
B = 1 * Split(C.Text, ",")(2)
C.Interior.Color = VBA.RGB(R, G, B)
End Sub
 

job75

XLDnaute Barbatruc
Bonjour flocon, Pierre, Yurperqod,

Pour récupérer des nombres entiers dans un texte c'est facile avec les expressions régulières :
Code:
Sub couleur()
Dim o As Object, c As Range, a As Object
Set o = CreateObject("vbscript.regexp")
o.Global = True
o.Pattern = "\d+"
For Each c In Selection
  Set a = o.Execute(c)
  If a.Count = 3 Then c.Interior.Color = RGB(a(0), a(1), a(2))
Next
End Sub
A+
 

Pièces jointes

  • Couleurs et regexp(1).xlsm
    28.6 KB · Affichages: 35

job75

XLDnaute Barbatruc
Re,

Si l'on veut en plus gérer la couleur de police (blanc ou noir) pour que le texte soit lisible :
Code:
Sub couleur()
Dim o As Object, c As Range, a As Object
Set o = CreateObject("vbscript.regexp")
o.Global = True
o.Pattern = "\d+"
For Each c In Selection
  Set a = o.Execute(c)
  If a.Count = 3 Then
    c.Interior.Color = RGB(a(0), a(1), a(2))
    c.Font.Color = IIf(Int(c.Interior.Color / 256) Mod 256 > 128, vbBlack, vbWhite)
  End If
Next
End Sub
Code:
c.Font.Color = IIf(Int(c.Interior.Color / 256) Mod 256 > 128, vbBlack, vbWhite)
je l'ai trouvé sur un post de Modeste geedee.

Fichier (2).

A+
 

Pièces jointes

  • Couleurs et regexp(2).xlsm
    29.3 KB · Affichages: 44

Dranreb

XLDnaute Barbatruc
Bonsoir
J'y vais aussi de mon classeur.

Il contient du reste un système de calcul et des informations sur les couleurs qui devraient vous intéresser si vous faites un exposé sur ce sujet…
 

Pièces jointes

  • CouleurCls.xlsm
    153.9 KB · Affichages: 50
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
bonjour
C'est pour faire un petit exposé sur les couleurs mais il est assez fastidieux de colorer les cellules une à une.
Merci
pour une démonstration et ... pour le fun :
upload_2016-12-16_22-58-37.png
 

Pièces jointes

  • Rgb.xlsm
    37.5 KB · Affichages: 45

flocon

XLDnaute Nouveau
Houaaaa que de réponses ! C'est merveilleux :)
J'ai commencé à explorer et je suis admirative.
Je ne comprends pas tout, je vais prendre le temps d'essayer de comprendre tout ce qui m'est obscur.
Et excellente idée pour la gestion de la couleur du texte (c'est vrai que noir que noir...) je n'avais pas pensé à cet écueil sur les couleurs sombres.

Merci beaucoup
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz