bonjour j'ai une couleur sous la forme RGB(255,255,255) est je voudrais la convertir dans un long
des solutions?
bonjour j'ai une couleur sous la forme RGB(255,255,255) est je voudrais la convertir dans un long
des solutions?
BOnjour,
je ne comprends pas très bien ce que tu veux faire
Peux-tu donner un exemple plus précis de ce que tu veux faire ?
Le résultat que tu imagines obtenir ...
Ceci fonctionne mais pas sûr que çà soit ce que tu demandes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub a() Dim col As Long col = RGB(255, 255, 255) MsgBox col End Sub
C'est du calcul. Si tu convertis en Hexadécimal une valeur numérique représentant une couleur, tu pourras y constater ceci:
RGB(255,255,255) = (2^8)^3 - 1 = 16777215 = &HFFFFFF
et que le FF de droite représente le rouge, celui du milieu représente le vert et celui de droite représente le bleu (sens contraire du code HTML qui lui, va de gauche à droite). Si on représente le blanc en hexadécimal d'une manière plus graphique, ça donne : &HFFFFFF.
Pour illustrer le tout, voici deux fonctions à mettre dans un module et qui peuvent servir comme formules de cellules:
le contenu du tableau exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Function CouleurLong(r As Range, g As Range, b As Range) As Long CouleurLong = CLng(RGB(r.Value, g.Value, b.Value)) End Function Function CouleurHexa(r As Range, g As Range, b As Range) As String CouleurHexa = "&H" & Hex(CLng(RGB(r.Value, g.Value, b.Value))) End Function
la formule de la colonne D :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 A B C D E 1 r g b long hexa 2 255 255 255 16777215 &HFFFFFF 3 51 102 255 16737843 &HFF6633 4 204 204 51 3394764 &H33CCCC 5 18 200 140 9226258 &H8CC812 6 175 188 218 14335151 &HDABCAF 7 206 204 155 10210510 &H9BCCCE 8 0 8 23 1509376 &H170800 9 23 8 0 2071 &H817
la formule de la colonne E :
Code : Sélectionner tout - Visualiser dans une fenêtre à part =couleurlong(A2;B2;C2) ' recopiée vers le bas
Enjoy!
Code : Sélectionner tout - Visualiser dans une fenêtre à part =couleurhexa(A2;B2;C2) ' recopiée vers le bas
je n'y arrive pas!!
voila mon code
le PB c'est que j'ai une erreur dans la dernier ligne d'incompatibilite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim r As Long Dim g As Long Dim b As Long Dim st As String Dim CouleurLong As Long st = "RGB(255,150,120)" 'CECI EST UN RESULTAT CouleurLong = CLng(st)
meu non!
La fonction RGB retourne une valeur de couleur et cette valeur est numérique. Si tu pousses une string dans un CLng, tu n'auras jamais de résultat! Puisque cette string ne contient que du texte...
Tu as regardé les exemples de code que j'ai mis plus haut ?
Tiens :
Ou pour être certain que la conversion se fait sans accroc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CouleurLong = RGB(255, 255, 255)
Code : Sélectionner tout - Visualiser dans une fenêtre à part CouleurLong = CLng(RGB(255, 255, 255))
OUI mais je recois l'information sous forme de string
donc st = "RGB(255,150,120)" c'est mon entrer
et je le voudrais sous forme de long en sortie
merci
ah ok
dans ce cas, je te conseille de faire ceci
J'ai pris le cas où les codes couleurs sont sur 2 positions... je te conseille de faire quelques chose de plus souple pour recherhcer les valeurs comprises entre ( et , puis , et , puis entre , et )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub transforme(st as string ) Dim code1, code2, code3 As Integer code1 = CInt(Mid(st, 5, 3)) code2 = CInt(Mid(st, 9, 3)) code3 = CInt(Mid(st, 13, 3)) 'Maintenant tu fais ta fonction RGB dans le cod MsgBox CLng(RGB(code1, code2, code3)) End Sub sub main() call transforme("RGB(255,200,120)") end sub
Comme çà, les cas avec un code couelur sur 2 positions seront pris en compte
C'est maintenant que tu le dis? Tu te rends bien compte que le message original ne mentionne pas ce léger détail?
Il faudra utiliser le Script Control et faire un Eval de la chaîne en question ou encore extraire les valeurs de RGB avec des fonctions de chaîne comme l'a montré helios.
Pour utiliser le Script Control, tu ajoutes une référence à Microsoft Script Control 1.0 par le menu Outils, Références. Voici un exemple d'utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub test() MsgBox Convertir("RGB( 255, 255, 255)") End Sub Function Convertir(chaineRVB As String) As Long Dim scriptCtrl As ScriptControl, valeur As Long Set scriptCtrl = New ScriptControl scriptCtrl.Language = "VBScript" valeur = CLng(scriptCtrl.Eval(chaineRVB)) Set scriptCtrl = Nothing Convertir = valeur End Function
Bonsoir,
et dire qu'helios77 avait (dans la réponse 4 à adapter à son cas) sa réponse toute faite, ici (pour ce qui est de l'extraction des 3 composantes) ... il lui suffisait d'ajouter tout bêtement, pour chaque élément de l'array obtenu, la fonction Val :
http://www.developpez.net/forums/d59...a/#post3548362
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager