Affichage conditionnel sous Access?

Guenoë Messages postés 1 Statut Membre -  
 gregory -
Bonjour,

Dans ma base de données Access, je cherche à afficher un champ d'un formulaire sous condition de la valeur d'un autre champ dans ce même formulaire.
Dans les conditions d'exécution des macros, il y a des actions pour afficher un état, une table, etc... mais je ne trouve rien concernant l'affichage conditionnel de champs.

Pouvez-vous m'aider?

Merci d'avance.

1 réponse

CalicoJack Messages postés 48 Statut Membre 29
 
Ton champ de formulaire serait invisible et lorsquil répondrait à certains critères il deviendrait visible? Si c'est ta question, j'ai une solution.

Prenons par exemple un formulaire qui servirait à entrer les prix de certains articles. Ce formulaire contiendrait les champs suivant par défault:

NOM DANS LA TABLE
- Article
- Coût
- Prix de vente
- Raison

NOM DANS LE FORMULAIRE
- txtArticle
- txtCout
- txtPrix
- txtRaison

Mais si l'utilisateur entre un prix de vente inférieur au Coût de l'article, un autre champ apparait et c'est le champ RAISON. Qui servirait à mettre une raison pour vendre un article moins cher que son cout d'achat (exemple: Promotion pour détruire la concurrence).

Il faut d'abord que ce champ soit créé dans la table. Ensuite, il faut mettre le controle (le txtBox RAISON) à invisible par défault. Pour ce faire, dans les propriétés de txtRaison, il faut mettre VISIBLE à FAUX.

Il faut ensuite mettre une condition pour son affichage. La condition est : SI le prix < cout AFFICHE RAISON. En VBA ça donne:

IF [me.txtPrix]<[me.txtCout] THEN txtRaison.visible = TRUE

Maintenant que l'on a notre "formule", il faut que Access la traite au moment opportun. Ce moment est suite à la mise à jour du txtBox de prix et seulement si un Cout est aussi présent.

Il faut donc insérer notre formule dans l'événement AFTERUPDATE du txtPrix. Pour ce faire il faut aller dans propriété de txtPrix, onglet EVENT et mettre le code dans AFTERUPDATE.

Ce qui ressemblera à ceci:

SUB txtPrix_AfterUpdate

IF IS NOT NULL(me.txtCout) THEN
IF [me.txtPrix]<[me.txtCout] THEN txtRaison.visible = TRUE
END IF

END SUB


Ce qui arrive c'est: après la mise à jour du champ PRIX, Access vérifie si le champ COUT n'est pas vide. S'il n'est pas vide, il vérifie si le PRIX est inférieur au COUT et si tel est le cas, il rend le champ RAISON visible.

Voilà.

PS: Il faut aussi inclure cette procédure dans ONCURRENT pour que la boite de RAISON s'affiche quand on revient à un ancien enregistrement.
8
gregory
 
Bonjour,

Comment inclure la procédure dans "oncurrent".
J'ai essayé votre formule, ça fonctionne mais quand je rouvre le formulaire, mon champ reste invisible quel que soit la valeur de ma cellule conditionnelle
0