Masquer champ sous condition

Fermé
diphar - 12 avril 2013 à 14:07
 tessel75 - 12 avril 2013 à 21:59
Je crée une base de données de gestion de médicaments jusque là pas de pb. Dans un formulaire, j'ai deux champs : un champ "Mode de paiement" et un champ "Prix de gros". Je souhaite faire apparaître le champ "Prix de gros" quand le champ "Mode de paiement" contient la valeur "GR". J'ai écrit le code suivant dans la propriété après MAJ du champ "Mode de paiement" :
If [Mode de paiement] = "GR" Then
[Prix de gros].Visible = True
Else
[Prix de gros].Visible = False
End If
Cela ne fonctionne pas car ça s'applique à tous les enregistrements de la table et ça ne reste pas en mémoire sur l'enregistrement concerné.
Comment faire ? Je vous remercie pour votre aide précieuse

2 réponses

honey22 Messages postés 119 Date d'inscription mardi 21 août 2012 Statut Membre Dernière intervention 3 juillet 2014 31
12 avril 2013 à 18:40
Quel langage utilises-tu ?
0
Bonsoir,
Ce qui t'arrive est on ne peut plus normal; et ce que tu veux obtenir est tout simplement impossible. Et ce, pour plusieurs raisons.

Quand tu veux changer l'apparence d'un champ en fonction de son contenu, c'est en fait la présentation de l'ensemble du formulaire que tu changes. Càd que lorsque tu construis ton formulaire, certains champs sont visibles et d'autres masqués, cela quelque soit l'enregistrement sur lequel tu te positionnes. Il en va de même quand tu exécutes ta manoeuvre, la seule différence étant que tu modifies cette présentation en cours de saisie de données. Et comme à chaque nouvel enregistrement tu lui demandes de modifier sa présentation, ton code s'exécute et fait ce que tu lui as demandé de faire, sans distinction d' "étages" mais seulement de celui sur lequel tu es en train de travailler. Si ton formulaire est assez petit, tu peux choisir le mode "continu", et alors tu verras très bien que ton contrôle "PrixDeGros" change d'aspect en fonction de la dernière valeur saisie, et cela sur toute la hauteur de la colonne.
La seule chose que tu puisse faire pour avoir un semblant de résultat conforme à ton souhait est de mettre ton code dans la propriété du formulaire "Sur Activation". Alors chaque fois que tu sélectionneras un enregistrement, le code se déclenchera et ton formulaire prendra la présentation que tu veux... Surtout si tu travailles en mode "Formulaire séparé". Ainsi tu garderas la présentation voulue, mais toujours pour tous les enregistrements ouverts à ce moment.
Enfin, tu te plains que cette présentation n'est pas "enregistrée" ... Elle ne peut pas l'être puisque tu demandes d'en changer en fonction de la valeur du champ/contrôle "ModeDePaiement". Ou alors, il te faudrait qu'au moment de la fermeture tu ordonnes "enregistrement = oui". Mais en même temps, cela ne servirait à rien, puisque à la 1ère occasion ton code lui demandera de changer la propriété du contrôle en visible ou masqué.
Bonne suite
0