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.