OVH Cloud OVH Cloud

Appliquer un firtre sur un champ d'un sous formulaire

3 réponses
Avatar
Denis
Bonjour,
j'ai un formulaire principal : "Formulaire1" avec un sous formulaire
"Formulaire2".

A partir du menu de mon application, j'ouvre le formulaire principal avec la
commande :

DoCmd.OpenForm "Formulaire1", acNormal, "", "", acAdd, acNormal

Mais je souhaite, à l'ouverture de ce formulaire, appliquer un filtre sur un
champ (champ [controlé] de type Oui/Non) du sous formulaire, le
"Formulaire2".

Ma syntaxe à l'air incorrecte et semble ne pas fonctionner du tout :

DoCmd.ApplyFilter "", "[Forms]![Formulaire2]![Controlé] = True"

Il doit manquer qqchose pour exprimer que ce filtre s'applique à un champ du
sous formulaire.
Merci pour votre aide.

Denis

3 réponses

Avatar
3stone
Salut,

"Denis"
j'ai un formulaire principal : "Formulaire1" avec un sous formulaire
"Formulaire2".

A partir du menu de mon application, j'ouvre le formulaire principal avec la
commande :

DoCmd.OpenForm "Formulaire1", acNormal, "", "", acAdd, acNormal

Mais je souhaite, à l'ouverture de ce formulaire, appliquer un filtre sur un
champ (champ [controlé] de type Oui/Non) du sous formulaire, le
"Formulaire2".

Ma syntaxe à l'air incorrecte et semble ne pas fonctionner du tout :

DoCmd.ApplyFilter "", "[Forms]![Formulaire2]![Controlé] = True"




Essaies ainsi:

Me![Formulaire2].Form.Filter = "[Controlé]=True"
Me![Formulaire2].Form.FilterOn = True


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Denis
Merci pour ton aide,
les formules que tu m'as données :
Me![Formulaire2].Form.Filter = "[Controlé]=True"
Me![Formulaire2].Form.FilterOn = True
fonctionne parfaitement si je les lance avec par exemple, un bouton sur le
Formulaire1.

Par contre, si j'ouvre le Formulaire1 à partir d'un menu par exemple en
rajoutant tes deux lignes de commande comme ça :

DoCmd.OpenForm "Formulaire1", acNormal, "", "", acAdd, acNormal
Me![Formulaire2].Form.Filter = "[Controlé]=True"
Me![Formulaire2].Form.FilterOn = True

là ça me met le message d'erreur : "Impossible de trouve le champ Ref_detail
auquel il fait référence...."

Il doit me manquer un petit truc....
Merci à Toi
Denis

"3stone" a écrit dans le message de
news:uiMLD%
Salut,

"Denis"
j'ai un formulaire principal : "Formulaire1" avec un sous formulaire
"Formulaire2".

A partir du menu de mon application, j'ouvre le formulaire principal
avec la


commande :

DoCmd.OpenForm "Formulaire1", acNormal, "", "", acAdd, acNormal

Mais je souhaite, à l'ouverture de ce formulaire, appliquer un filtre
sur un


champ (champ [controlé] de type Oui/Non) du sous formulaire, le
"Formulaire2".

Ma syntaxe à l'air incorrecte et semble ne pas fonctionner du tout :

DoCmd.ApplyFilter "", "[Forms]![Formulaire2]![Controlé] = True"




Essaies ainsi:

Me![Formulaire2].Form.Filter = "[Controlé]=True"
Me![Formulaire2].Form.FilterOn = True


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------







Avatar
3stone
Salut,

"Denis"
[...]
Par contre, si j'ouvre le Formulaire1 à partir d'un menu par exemple en
rajoutant tes deux lignes de commande comme ça :

DoCmd.OpenForm "Formulaire1", acNormal, "", "", acAdd, acNormal
Me![Formulaire2].Form.Filter = "[Controlé]=True"
Me![Formulaire2].Form.FilterOn = True

là ça me met le message d'erreur : "Impossible de trouve le champ Ref_detail
auquel il fait référence...."



Oui oui...

Comme "Me" représente l'instance en cours d'un formulaire (ou état)
il faut, bien sûr, que le code s'y trouve aussi...


Dans le cas que tu explique, il faut écrire :

Forms![Formulaire1]![Formulaire2].Form.Filter = "[Controlé]=True"
Forms![Formulaire1]![Formulaire2].Form.FilterOn = True



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------