Convertisseur de couleurs Hexadécimal en Code RGB (Vice Versa) [Résolu]

Signaler
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009
-
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

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 ...
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

Non effectivement c'est pas sa ... J'ai essayé de mettre 0, 0 comme cellule active mais sa me met denouveau n'importe ou -_-
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

Rien ne ce passe ... Ni de 0 encore moin le bon Résultat rien ...
(A3,B3,C3,D3)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
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
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

Voila c'est envoyé
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

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 !
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

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 ?
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

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...
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

:D Toujours incompatibilité de type la j'ai recopier lettre par lettre ton code ...
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

J'ai rien dit sa marche !!!
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

Merci Merci Merci Merci Merci !!!
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

Ah oui j'oubliais et pour le contraire ?
Messages postés
31
Date d'inscription
mercredi 28 juin 2006
Statut
Membre
Dernière intervention
9 janvier 2009

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 -_-