Conversion HSL en RVB (Microsoft Excel)
Bassel a besoin d’une formule capable de convertir les valeurs de couleur HSL (valeurs de teinte, de saturation et de luminosité) en valeurs de couleur RVB (valeurs rouge, bleu et vert). Il se demande si quelqu’un peut lui indiquer une formule de feuille de calcul qui fera cela ou un moyen de le faire dans une macro.
La conversion des valeurs HSL en valeurs RVB n’est pas une entreprise particulièrement triviale. Pour ceux qui sont intéressés par les mathématiques derrière cela, vous pouvez voir l’article de Wikipedia sur le sujet.
Si vous devez effectuer la conversion rarement, le moyen le plus simple est de suivre ces étapes:
-
Affichez l’onglet Accueil du ruban.
-
Cliquez sur la flèche vers le bas sur le côté droit de l’outil Couleur de remplissage, dans le groupe Police. Excel affiche une petite palette de couleurs et quelques autres options.
-
Choisissez plus de couleurs. Excel affiche la boîte de dialogue Couleurs.
-
Assurez-vous que l’onglet Personnalisé est affiché.
-
À l’aide de la liste déroulante Modèle de couleur, choisissez TSL. (Voir la figure 1.)
-
Au bas de la boîte de dialogue, vous pouvez voir les valeurs individuelles pour Hue, Sat et Lum. Modifiez ces valeurs pour ce que vous voulez.
-
À l’aide de la liste déroulante Modèle de couleur, choisissez RVB. Les valeurs affichées en bas de la boîte de dialogue sont les valeurs HSL (saisies à l’étape 6)
converti en RVB.
-
Cliquez sur Annuler lorsque vous avez terminé.
Cette approche suppose que chacune de vos valeurs HSL peut être exprimée dans la plage de 0 à 255. Si, cependant, vos valeurs HSL sont soit un angle (pour la teinte) ou un pourcentage (pour la saturation et la luminance), alors vous aurez besoin pour les convertir manuellement avant de les saisir à l’étape 6. Vous pouvez convertir une valeur d’angle en multipliant l’angle par 255 puis en divisant par 360.
Les pourcentages peuvent être convertis en les multipliant par 2,55.
Si vous avez besoin d’obtenir les valeurs plus souvent, la création de votre propre fonction définie par l’utilisateur pour effectuer la conversion vous aidera. L’exemple suivant accepte trois paramètres (Hue, Saturation et Luminance) et renvoie une chaîne contenant les valeurs RVB décimales séparées par des virgules.
Function HSLtoRGB(Hue As Integer, Saturation As Integer, _ Luminance As Integer) As String Dim r As Integer Dim g As Integer Dim b As Integer Dim C As Double Dim X As Double Dim m As Double Dim rfrac As Double Dim gfrac As Double Dim bfrac As Double Dim hangle As Double Dim hfrac As Double Dim sfrac As Double Dim lfrac As Double If (Saturation = 0) Then r = 255 g = 255 b = 255 Else lfrac = Luminance / 255 hangle = Hue / 255 360 sfrac = Saturation / 255 C = (1 - Abs(2 lfrac - 1)) sfrac hfrac = hangle / 60 hfrac = hfrac - Int(hfrac / 2) 2 'fmod calc X = (1 - Abs(hfrac - 1)) C m = lfrac - C / 2 Select Case hangle Case Is < 60 rfrac = C gfrac = X bfrac = 0 Case Is < 120 rfrac = X gfrac = C bfrac = 0 Case Is < 180 rfrac = 0 gfrac = C bfrac = X Case Is < 240 rfrac = 0 gfrac = X bfrac = C Case Is < 300 rfrac = X gfrac = 0 bfrac = C Case Else rfrac = C gfrac = 0 bfrac = X End Select r = Round((rfrac + m) 255) g = Round((gfrac + m) * 255) b = Round((bfrac + m) * 255) End If HSLtoRGB = Str(r) & "," & Str(g) & "," & Str(b) End Function
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (13535) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.