Merci beaucoup tee_grandbois du temps que tu prends pour répondre aux gens ![:ccool:](https://www.developpez.net/forums/images/smilies/ccool.gif)
Je viens tout juste de trouver la solution à mes souhaits. En fait, j'essaye de trouver des codes VBA générique c'est-à-dire qui peuvent aller à de nombreux endroits de ma base sans être obligé de recopier x fois le même code.
Et justement le bout de code
WHERE (((GeoTBLPaysTBL.GeoPaysId) in (" & stFiltre & ")));
qui mentionne clairement la table dans le code VBA ne correspond pas à ce que j'essaye de faire. Sachant que je ne sais pas à l'avance si ce que je recherche est possible
et c'est là toute la difficulté que j'ai.
Je vous fais part de ce que j'ai réussi à faire :
Code dans un module VBA :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Public Function FiltresFonction(ChampNom As String, _
FormulaireNom As String, _
ControleNom As String) As Boolean
' Définitions
Dim result As Boolean
Dim frm As Form
Dim ctlFiltre As Control
Dim varItm As Variant
' Déclaration des objets liste à sélection multiple
Set frm = Forms(FormulaireNom)
Set ctlFiltre = frm(ControleNom)
result = False
If ctlFiltre.ItemsSelected.Count > 0 Then
For Each varItm In ctlFiltre.ItemsSelected
If ChampNom = ctlFiltre.ItemData(varItm) Then
result = True
Exit For
End If
Next varItm
Else
result = True
End If
FiltresFonction = result
End Function |
Puis dans une case de ma requête :
- sur la ligne "champ:" :
Expr1: FiltresFonction([TestunTBLChamp1TBL];"TestunFRM";"FiltreChamp1ZLT")
- sur la ligne "Critères:" :
Et voilà, je sélectionne ce que je veux dans la zone de liste "FiltreChamp1ZLT" et la requête sort les enregistrements correspondant à chaque sélection de cette liste.
De plus, lorsque je n'ai rien sélectionné dans la zone de liste (le cas quand j'ouvre mon formulaire), il affiche la totalité des enregistrements quand même. Ce via le code . C'est fait exprès.
N'ayant pas trouvé ce type de code sur la FAQ ou autre, et s'il n'existe pas pour l'instant, je souhaiterais faire et proposer un petit tuto après avoir poussé un peu plus mon formulaire de recherche (j'ai d'autres points à voir encore). Est ce possible ? Je souhaite ainsi apporter ma contribution, ce qui serait normal car souvent c'est vous qui m'aidez.
A bientôt.
Partager