Bonjour,
Je cherche une macro ou fonction pour transformer le code TSL en RGB, pour éviter de le refaire.
Je n'en trouve pas en VBA, et je pense que ça doit déjà être fait !
Merci si vous pouvez m'aider.
Version imprimable
Bonjour,
Je cherche une macro ou fonction pour transformer le code TSL en RGB, pour éviter de le refaire.
Je n'en trouve pas en VBA, et je pense que ça doit déjà être fait !
Merci si vous pouvez m'aider.
Salut, regarde http://www.developpez.net/forums/d61...e-couleur-tsl/
Merci kiki29, mais ce n'est pas du VBA.
Le lien de Kiki me semble correct...
A toi de lire et de comprendre ce que tu cherche. Dans ce lien, regarde bien le message de l'utilisateur Ucfoutu. Je pense qu'il est interressent.
Ne t'attend pas à un code tout préfabriqué.
A toi de le construire...
J'ai bien compris.
Je pense que si ça existe, ce n'est pas la peine de ré-inventer la roue.
Ça m'étonne de ne rien trouver.
Je me suis trompé dans l'intitulé.
C'est TSL vers RGB ! en VBA.
Excusez-moi
bjr,
il faut chercher en anglais (RGBToHLS)pour trouver des fonctions toutes faites
sinon il y a des API :
Code:
1
2
3 Public Declare Sub ColorRGBToHLS Lib "shlwapi.dll" (ByVal clrRGB As Long, wHue As Integer, wLuminance As Integer, wSaturation As Integer) Public Declare Function ColorHLSToRGB Lib "shlwapi.dll" (ByVal wHue As Integer, ByVal wLuminance As Integer, ByVal wSaturation As Integer) As Long
Merci Arkham46,
Faut-il alors ajouter les librairies ?
Je ne sais pas très bien manipuler ça
il suffit de mettre les deux lignes dans un module et d'appeler les fonctions comme n'importe quelle autre fonction
la librairie Shlwapi.dll est déjà installée (à partir de win XP/2000 d'après MSDN)
Je n'y arrive pas.
Pourrais-tu me donner un petit modèle ?
Merci.
Insertion => Module
y coller ces deux lignes :
Et voilà par exemple pour augmenter la luminance et diminuer la saturation d'un ecouleur :Code:
1
2 Public Declare Sub ColorRGBToHLS Lib "shlwapi.dll" (ByVal clrRGB As Long, wHue As Integer, wLuminance As Integer, wSaturation As Integer) Public Declare Function ColorHLSToRGB Lib "shlwapi.dll" (ByVal wHue As Integer, ByVal wLuminance As Integer, ByVal wSaturation As Integer) As Long
Code:
1
2
3
4
5
6
7
8
9
10
11 Dim lRGB As Long Dim lH As Integer, lS As Integer, lL As Integer ' Couleur verte lRGB = vbGreen ' Calcul des teintes / luminance / saturation ColorRGBToHLS lRGB, lH, lL, lS lL = lL * 1.5 ' augmente la luminance lS = lS * 0.5 ' diminue la saturation ' Calcul de la couleur RGB modifiée lRGB = ColorHLSToRGB(lH, lL, lS)
Merci pour le modèles.
Mais j'obtiens le message d'erreur :
Erreur de compilation:
Des constantes, chaînes de longueurs fixes, tableaux, types définis par l'utilisateur et instructions Declare ne sont pas autorisées comme membres Public de module d'objet
Que faire
J'attendais que la fonction me retourne R,G,B quand on lui donne H,S,L.
Ce n'est pas ce que j'obtiens.
Ou alors, je ne sais pas m'en servir, ou je ne me suis pas bien fait comprendre.
Comment faire pour obtenir R et G et B quand on a H et S et L qui correspondent à la même couleur ?
Salut
Je répond 8 mois plus tard :p
Une couleur ici est un "long" codé sur 24 bits tels que 8 bits soient aloués à chaque couleur. Voici ce que fait la fonction RGB :
A partir de la couleur,pour retrouver la composante de chacune des 3 couleurs, il faut faire:Code:couleur =256^2*R + 256*G +B
Code:
1
2
3
4 Debug.Print "R: " & Int(Couleur / (256 ^ 2)) Debug.Print "G: " & Int((Couleur /256) Mod 256 ) Debug.Print "B: " & Couleur Mod 256
J'ai d'autres questions
Comment as tu fait pour trouver Lib "shlwapi.dll"??? Je veux dire, où puis je prendre connaissance des autres fonctions utiles présentes dans ces libs? Ca m'interresse pas mal!
Tous les postes pourvus d'Excel possèdent-ils cette lib? En effet, je souhaite utiliser ces fonctions des outils que je souhaite fournir à mes collègues.
Salut,va jeter un oeil sur http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx