Format couleur non reconnu access / VBA

Fermé
Panda - 6 juin 2013 à 12:27
 Felix_73 - 18 janv. 2016 à 16:16
Bonjour,

j'ai une table pour stocker des préférences comme suit:

N° Option Paramètre
2 Couleur entete RGB (198, 217, 241)
3 couleur détail RGB (250,192,144)
4 couleurtextentete RGB (31,73,125)

j'ai crée un formulaire pour que l'utilisateur puisse modifier ces couleurs. Dans le form.load, je mets dans un premier temps les valeurs actuelles, prises dans ma table, dans des zones de texte non modifiables:
TxtcoulMenu.Value = DLookup("[Paramètre]", "Options", "[N°] = 2")
TxtCoulDetail.Value = DLookup("[Paramètre]", "Options", "[N°] = 3")
TxtCoulTextMenu.Value = DLookup("[Paramètre]", "Options", "[N°] = 4")

ensuite j'ai crée une représentation d'un formulaire avec simplement 2 label (une pour l'entête, l'autre pour la partie détail) qui doivent être coloriées avec ces couleurs.

LblMenuDemo.BackColor = DLookup("[Paramètre]", "Options", "[N°] = 2")

mais là j'ai un message d'erreur "incompatibilité de type". j'imagine donc que VBA ne reconnait pas "DLookup("[Paramètre]", "Options", "[N°] = 2")" comme un format couleur valide.
pourtant j'ai testé avec une MsgBox que "DLookup("[Paramètre]", "Options", "[N°] = 2")" retournait bien "RGB (198, 217, 241)" et l'instruction
LblMenuDemo.BackColor = RGB (198, 217, 241)
fonctionne correctement.

d'où vient le problème et comment y pallier?

question subsidiaire: quelqu'un sait si on peut utiliser les fenêtres de choix de couleur Windows?

A voir également:

2 réponses

en fait ca marche si je stocke mes couleurs au format decimal (ex : 15849926), mais ce n'est vraiment pas parlant pour l'utilisateur.
le format RGB me semble le plus approprié.
une idée?
0
Réponse tardive mais ça peut servir à d'autres...

Le problème est du au fait que le champs dans lequel tu stockes ta couleur RGB est probablement de type texte (tu stockes dans ce champs la chaine "RGB(x,y,z)"). Par conséquent, "DLookup("[Paramètre]", "Options", "[N°] = 2")" te renvoie aussi une valeur de type texte alors que LblMenuDemo.BackColor attend un entier long, d'où l'erreur.
Solution la plus simple : forcer l'évaluation de la fonction RGB au moyen de la fonction EVAL :
LblMenuDemo.BackColor = Eval( DLookup("[Paramètre]", "Options", "[N°] = 2") ) qui est équivalent à LblMenuDemo.BackColor = Eval("RGB(x,y,z)") et retourne bien un entier long.
0