Convertisseur de couleurs Hexadécimal en Code RGB (Vice Versa)

Résolu
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009 - 9 nov. 2006 à 09:58
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009 - 10 nov. 2006 à 10:50
Voila je cherche a faire un convertisseur de couleur hexadécimale (ex: #562290) en code RGB (x, x, x) sur Excel.
J'ai trouver un code avec une message box mais ce que je cherche a faire en fait c'est qu'un utilisateur puisse entrer une valeur en Hexadécimal dans un cellulle prévue a cet effet et qu'en cliquant sur le bouton pour convertir cela affiche les chiffres convertis dans 3 cellules différentes ... J'ai un bout de code mais cela ne fonctionne pas ... :

Private Sub ConvertirHexDec_Click()

On Error GoTo Annuler
Dim Couleurs As Long
Couleurs = ActiveCell.Offset(3, 1).Value
If Couleurs > 16777215 Or Couleurs < 0 Then MsgBox "Erreur veuillez recommencer": GoTo Annuler
ActiveCell.Offset(3, 2).Value = Couleurs - (256 * Int((Couleurs - (Int(Couleurs / 65536) * 65536)) / 256) + (65536 * Int(Couleurs / 65536)))
ActiveCell.Offset(3, 3).Value = Int((Couleurs - (Int(Couleurs / 65536) * 65536)) / 256)
ActiveCell.Offset(3, 4).Value = Int(Couleurs / 65536)
Annuler:
End Sub

21 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2006 à 15:10
Salut,
Quelles sont les addresse des cellules souhaitée alors.

Tu peux essayer ceci. Ceci devrait calculer  a partir de la Cellule A1 de la feuille active et mettre les resultat en B1, C1, D1

Deja on verra si cela regle le problème de localisation

Private Sub ConvertirHexDec_Click() 

On Error GoTo Annuler 
Dim Couleurs As Long 
    Couleurs =  ActiveSheet.Range("A1").Value 
    If Couleurs > 16777215 Or Couleurs < 0 Then MsgBox "Erreur veuillez recommencer": GoTo Annuler 
    ActiveSheet.Range("B1").Value = Couleurs - (256 *  Int (Couleurs - (Int(Couleurs / 65536) * 65536)) / 256) + (65536 * Int(Couleurs / 65536))) 
    ActiveSheet.Range("C1").Value  = Int(Couleurs - (Int(Couleurs / 65536) * 65536)) / 256) 
    ActiveSheet.Range("D1").Value =   Int (Couleurs / 65536) 
Annuler: 
End Sub 

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2006 à 16:29
Re,
Alors,
    - Il ne se passe rien car en fait il y a une incomptaibilité de type (masque car On Error Goto Annuler) = > pour développer je te conseil de l'enlever car au moins si il y a une erreur tu la verras.
    - Ensuite: je te marque ActiveSheet.Range ("A1").Value et toi tu recopie  ActiveCell.Offset("A3").Value

Voila déjà cela te permet au moins d'avoir des récultat dans les cellules souhaités.

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2006 à 17:01
Re,

Ceci
couleur.substr(0,2)  pourrais se traduire par Mid(couleur, 1, 2)  MAIS ATTENTION AVEC COULEUR AS STRING
couleur.substr(2,2)  pourrais se traduire par Mid(couleur, 3, 2) 
couleur.substr(4,2)  pourrais se traduire par Mid(couleur, 5, 2) 

Pour le Number() Je pense que c'est la convertion Hexadécimal = > Décimal Essaie peu etre alors
Cdec("&H" & Mid(couleur, 5, 2))

Ensuite stocke les resultat dans des variable

Soit

Dim Coulr As Integer 
Dim Coulb As Integer 
Dim Coulg As Integer 
Dim Couleur As String 
Couleur = "FFC0C0" 
Coulr = CDec("&H" &  Mid (Couleur, 1, 2)) 
Coulg  = CDec("&H" & Mid(Couleur, 3, 2)) 
Coulb =  CDec("&H" &  Mid (Couleur, 5, 2)) 

Le var je vois pas
@+: =89254 Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 nov. 2006 à 09:16
Salut,

Si le code posté est tel quel dans ton classeur c'est normal ...
IL faudrait peu etre ajouter un option Explicit en haut de toute tes feuille de code. cela t'éviterais des erreurs
Tu as mis Couleur au Pluriel = > Hors ce n'est pas une variables déclarer
De plus TU AS MAL RECOPIE Ce n'est ActiveCell.Range("A3") MAIS ActiveSHEET.Range("A3").Value

Soit:
Option Explicit 
Private Sub ConvertirHexDec_Click() 
Dim Coulr As Integer 
Dim Coulb As Integer 
Dim Coulg As Integer 
Dim Couleur As String 

Couleur  = ActiveSheet.Range("A3").Value 
Coulr =  CDec("&H" &  Mid (Couleur, 1, 2)) 
Coulg  = CDec("&H" & Mid(Couleur, 3, 2)) 
Coulb =  CDec("&H" &  Mid (Couleur, 5, 2)) 
ActiveSheet.Range("B3").Value  = Coulr 
ActiveSheet.Range("C3").Value =  Coulg 
ActiveSheet.Range("D3").Value = Coulb 
End Sub 

Une petite relecture du code des fois ca serait pas mal non?

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 nov. 2006 à 10:40
Salut,

Et bien tu utilises la Fonction Hex() qui te renvoie la valeur Hexadecimal et tu concatene la valeur.

Private Sub ConvertirDecHex_Click() 

Dim Coulr As Integer 
Dim Coulb As Integer 
Dim Coulg As Integer 
    'Récupère la composante Rouge
    Coulr =  ActiveSheet.Range("B3").Value 
    'Récupère la composante Verte
    Coulg = ActiveSheet.Range("C3").Value 
    'Récupère la composante Bleu
    Coulb = ActiveSheet.Range("D3").Value 
    'Utilise la fonction Hex et concaténation
    ActiveSheet.Range("E3").Value =  CStr (Hex(Coulr)) & CStr(Hex(Coulg)) & CStr(Hex(Coulb)) 

End Sub

Note: Cela ne sert a rien de mettre réponse acceptée si tu l'enlèves après....  Ce qu'il faut c'est utilser ce réponse acceptée sur le OU les posts qui ont pu  t'aider a avancer dans ton problème.
@+: =89254 Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2006 à 10:03
Salut,
CEla ne fonctionne pas...
D'après ce que je comprends, ta conversion fonctionne mais c'est l'affichage des résultats qui ne marche pas?

@+: Ju£i?n
Pensez: Réponse acceptée
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
9 nov. 2006 à 10:14
Oui en fait cela s'affiche n'importe ou et des fois sa s'affiche pas .. et je ne suis pas sur du calcul ... ça maffiche des 0 n'importe ou la pluspart du temps ...
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2006 à 10:21
Salut,

Theoriquement pour ton calcule.

Couleurs= la cellule 3 lignes en dessous et une colonne a droite de la cellule active... Est ce que c'est réellement la valeur que tu souhaite pour ton calcul?
De meme les résultat seront 3 lignes en dessous et 2, 3 , 4 colonne a droite.
Est ce que c'est réellement ce que tu souhaite?

@+: Ju£i?n
Pensez: Réponse acceptée
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
9 nov. 2006 à 14:40
Non effectivement c'est pas sa ... J'ai essayé de mettre 0, 0 comme cellule active mais sa me met denouveau n'importe ou -_-
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
9 nov. 2006 à 15:41
Rien ne ce passe ... Ni de 0 encore moin le bon Résultat rien ...
(A3,B3,C3,D3)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2006 à 15:48
Salut,
Envoie ton classeur Excel... epsylon9@gmail.com
Peu etre pourrais je aider.
Car la je ne vois pas

@+: Ju£i?n
Pensez: Réponse acceptée
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
9 nov. 2006 à 16:18
Voila c'est envoyé
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
9 nov. 2006 à 16:34
Ah j'abais pas fait attention ;) J'avais juste vu les chiffres dans les parnthèse qui changeais ;)

sa marche maintenant merci ;) Bon sa me met toujours que des 0 c'est mon calcul qui doit être faux ;) Merci pour ton aide !
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
9 nov. 2006 à 16:43
Encore un toute pitie question ;)

Ca:

var coulr=Number("0x"+couleur.substr(0,2));
var coulg=Number("0x"+couleur.substr(2,2));
var coulb=Number("0x"+couleur.substr(4,2));

En traduction VBA sa donnerais quoi ?
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
10 nov. 2006 à 08:56
Ok merci.

Voici mon code :

Private Sub ConvertirHexDec_Click()


Dim Coulr As Integer
Dim Coulb As Integer
Dim Coulg As Integer
Dim Couleur As String
Couleurs = ActiveCell.Range("A3").Value
Coulr = CDec("&H" & Mid(Couleur, 1, 2))
Coulg = CDec("&H" & Mid(Couleur, 3, 2))
Coulb = CDec("&H" & Mid(Couleur, 5, 2))

ActiveCell.Range("B1").Value = Coulr
ActiveCell.Range("C1").Value = Coulg
ActiveCell.Range("D1").Value = Coulb


End Sub

Cela me met type incompatible...
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
10 nov. 2006 à 09:33
:D Toujours incompatibilité de type la j'ai recopier lettre par lettre ton code ...
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
10 nov. 2006 à 09:34
J'ai rien dit sa marche !!!
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
10 nov. 2006 à 09:34
Merci Merci Merci Merci Merci !!!
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
10 nov. 2006 à 10:18
Ah oui j'oubliais et pour le contraire ?
0
Drahnur2 Messages postés 31 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 janvier 2009
10 nov. 2006 à 10:47
Ok Merci sa marche ! Le seul problème c'est que je doive a chaque fois relancer ma maccro donc en fait le bouton marche pas -_-
0
Rejoignez-nous