Affichage conditionnel sous Access?
Guenoë
Messages postés
1
Statut
Membre
-
gregory -
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.
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.
A voir également:
- Access afficher sous-formulaire sous condition
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Excel cellule couleur si condition texte - Guide
- Afficher appdata - Guide
- Formulaire de reclamation instagram - Guide
1 réponse
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.
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.
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