Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Associer la couleur d'une case à des valeurs RGB contenues dans d'autres cases

  • Initiateur de la discussion Initiateur de la discussion adrienkay
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

adrienkay

Guest
Bonjour,

je fais de la colorimétrie et j'ai constitué une liste de couleurs.

Chaque couleur occupe une ligne dans une feuille, la ligne
contient des mesures colorimétriques qui peuvent être
transformées facilement (par moi) en valeurs RGB.

Pour plus de lisibilité, je voudrais mettre dans chaque ligne
une case qui affiche automatiquement la couleur en fonction
des valeurs des cases R, G et B.

Est-ce possible? et si oui, comment faire?

Merci
 
Re : Associer la couleur d'une case à des valeurs RGB contenues dans d'autres cases

Bonjour.
J'ai ce code quelque part qui le fait, à adapter:
VB:
Sub ColorerModèles(Feui As Worksheet)
Dim Rg As Range, Sh As Shape, NuSh As Integer, L As Integer, LDébM1 As Integer, Gauche As Single, Larg As Single
With Feui.[Modèle]: Gauche = .Left: Larg = .Width: End With
For NuSh = 1 To Feui.Shapes.Count
   If Left$(Feui.Shapes(NuSh).Name, 7) = "Couleur" Then Exit For
   Next NuSh
LDébM1 = Feui.[Tablo].Row - 1
For Each Rg In Feui.[Tablo].Rows
   L = Rg.Row
   If NuSh > Feui.Shapes.Count Then
      Set Sh = Feui.Shapes.AddShape(msoShapeRectangle, Gauche, Rg.Top, Larg, Rg.Height)
      Sh.Line.Visible = msoFalse
      Sh.Fill.Solid
   Else
      Set Sh = Feui.Shapes(NuSh)
      End If
   Sh.Name = "Couleur" & Format(L - LDébM1, "000")
   Sh.Fill.ForeColor.RGB = RGB(Round(Feui.[Rouge].Rows(L).Value), _
                               Round(Feui.[Vert].Rows(L).Value), _
                              Round(Feui.[Bleu].Rows(L).Value))
   Sh.Left = Gauche: Sh.Top = Rg.Top: Sh.Width = Larg: Sh.Height = Rg.Height
   NuSh = NuSh + 1
   Next Rg
While NuSh <= Feui.Shapes.Count: Feui.Shapes(NuSh).Delete: Wend
End Sub
Sur un ensemble de lignes entières nommées "Tablo", il place à chaque ligne de la colonne entière nommée "Modèle" un rectangle coloré selon les valeurs des colonnes entières nommées "Rouge", "Vert" et "Bleu".

À part ça, vos formules de conversion de mesures colorimétriques en valeurs RVB m'intéressent.
J'ai moi même un module de calcul de couleurs basé sur des expérience personnelles avec un tout petit peu d'apport de CIELab corrigé à ma façon, et je voudrais savoir s'il y a une norme (plus ou moins suivie par les constructeurs d'écrans) de conversion de valeurs linéaires en valeurs RVB
J'utilise actuellement:
VB:
Const ExGamma = 222841 / 96323, GLimite = 1307 / 151              ' E500:186,04 E250:134,93 E125:97,05 E62,5:68,98
 Const kEG1 = 1000 ^ (1 / ExGamma) / (GLimite * (ExGamma - 1) + 255), kEG2 = 1000 ^ (1 / ExGamma) - 255 * kEG1
Const ELimite = (GLimite * kEG1 + kEG2) ^ ExGamma, FLinéaire = ELimite / GLimite
Public Const EMaxSupporté = (255.499999 * kEG1 + kEG2) ^ ExGamma, EMinSupporté = -0.499999 * FLinéaire
Function EnrgG(ByVal Gris As Double) As Double
If Gris > GLimite Then EnrgG = (Gris * kEG1 + kEG2) ^ ExGamma Else EnrgG = Gris * FLinéaire
End Function
Function GrisE(ByVal Enrg As Double) As Double
If Enrg > ELimite Then GrisE = (Enrg ^ (1 / ExGamma) - kEG2) / kEG1 Else GrisE = Enrg / FLinéaire
End Function
À+
 
Dernière édition:
Re : Associer la couleur d'une case à des valeurs RGB contenues dans d'autres cases

Bonjour,

J'avais fait, il y a longtemps, un fichier avec différents codages de couleurs. Vois si tu peux en tirer les infos qui t'intéressent dans les codes VBA...

(les deux fichiers sont identiques)

Cordialement
 

Pièces jointes

Re : Associer la couleur d'une case à des valeurs RGB contenues dans d'autres cases

Hello,

je vais jeter un oeil à tes codes, mais je suis novice en VBA 🙁

tes calculs RGB se réfèrent à quels types de mesures??

Si - comme moi - ce sont des échantillons matériels, on rencontre souvent le problème d'avoir affaire à des valeurs R ou B négatives lorsque les couleurs sont trop saturées (ça arrive souvent avec les peintures jaunes : jaune de cadmium notamment ; et les turquoises).

Dans ce cas, je n'ai pas de solution... l'écran est tout simplement incapable de délivrer la couleur en question.

Pour le reste, j'ai tout piqué là : EasyRGB - The inimitable RGB and COLOR search engine!
 
Re : Associer la couleur d'une case à des valeurs RGB contenues dans d'autres cases

CIELab corrigé à ta façon? c'est-à-dire?

Pour ma part j'utilise un Yxy "corrigé à ma façon", car c'est le seul espace qui peut me donner des axes ou même des "plans" sur lesquels les couleurs s'opposent. J'ai fait une conversion auto de coordonnées cartésiennes en polaires pour avoir des angles dans le Yxy.

Bien à vous
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…