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:

  1. Affichez l’onglet Accueil du ruban.

  2. 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.

  3. Choisissez plus de couleurs. Excel affiche la boîte de dialogue Couleurs.

  4. Assurez-vous que l’onglet Personnalisé est affiché.

  5. À l’aide de la liste déroulante Modèle de couleur, choisissez TSL. (Voir la figure 1.)

  6. 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.

  7. À 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.

  1. 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.