Bonjour,
Actuellement pour filtrer les enregistrements de mon formulaire en mode continu, j'utilise le code suivant :
Les contrôles choisis dans l'exemple ci-dessus sont des listes déroulantes. Par exemple, si je sélectionne "Alimentation" dans la liste "FILTRE_Jrn_Quoi_Ctg_Id" alors cela n'affiche que les enregistrements dont la catégorie "quoi" ont l'id de "alimentation".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36
37
38
39
40 Private Sub BTN_Filtrer_Click() Forms("Journal_Frm").FilterOn = False 'Vider le texte du filtre VARP_FormEnCours_Filtre_STR = "" 'Créer le texte du filtre With Forms("Journal_Frm") 'QUI 'FILTRE_Jrn_Qui_Idv_Id If MODFCT_ControleIdVide_BOO(.Controls("FILTRE_Jrn_Qui_Idv_Id")) = False _ Then VARP_FormEnCours_Filtre_STR = VARP_FormEnCours_Filtre_STR & " and [Jrn_Qui_Idv_Id]=" & .Controls("FILTRE_Jrn_Qui_Idv_Id").Value 'QUOI 'FILTRE_Jrn_Quoi_Ctg_Id If MODFCT_ControleIdVide_BOO(.Controls("FILTRE_Jrn_Quoi_Ctg_Id")) = False _ Then VARP_FormEnCours_Filtre_STR = VARP_FormEnCours_Filtre_STR & " and [Jrn_Quoi_Ctg_Id]=" & .Controls("FILTRE_Jrn_Quoi_Ctg_Id").Value 'FACTURE 'FILTRE_Facture_FacturesId_TXC If MODFCT_ControleIdVide_BOO(.Controls("FILTRE_Jrn_Facture_Fct_Id")) = False _ Then VARP_FormEnCours_Filtre_STR = VARP_FormEnCours_Filtre_STR & " and [Jrn_Facture_Fct_Id]=" & .Controls("FILTRE_Jrn_Facture_Fct_Id").Value End With 'Si Filtre est vide alors Exit If VARP_FormEnCours_Filtre_STR = "" Then MsgBox "Aucun filtre choisi" Exit Sub End If 'Supprimer le " and " du début VARP_FormEnCours_Filtre_STR = Right(VARP_FormEnCours_Filtre_STR, Len(VARP_FormEnCours_Filtre_STR) - 4) 'Appliquer le filtre selon le texte Forms("Journal_Frm").Filter = VARP_FormEnCours_Filtre_STR Forms("Journal_Frm").FilterOn = True
Cependant, j'ai besoin d'aller plus loin dans mon filtre, en filtrant cette catégorie "quoi" selon plusieurs id et non pas un seul. Pour cela, j'ai essayé d'imaginer cette liste d'id via une requête :
Mais ce que je ne sais comment faire c'est quel code VBA je dois utiliser dans mon premier code ci-dessus pour que la fonction Filter filtre en fonction du résultat de la requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT Categorie_Niveau_Req.Ctg_Id FROM Categorie_Niveau_Req WHERE (((Categorie_Niveau_Req.Niv1Id)=[Formulaires]![Journal_Frm]![FILTRE_Jrn_Quoi_Ctg_Id])) OR (((Categorie_Niveau_Req.Niv2Id)=[Formulaires]![Journal_Frm]![FILTRE_Jrn_Quoi_Ctg_Id])) OR (((Categorie_Niveau_Req.Niv3Id)=[Formulaires]![Journal_Frm]![FILTRE_Jrn_Quoi_Ctg_Id])) OR (((Categorie_Niveau_Req.Niv4Id)=[Formulaires]![Journal_Frm]![FILTRE_Jrn_Quoi_Ctg_Id])) OR (((Categorie_Niveau_Req.Niv5)=[Formulaires]![Journal_Frm]![FILTRE_Jrn_Quoi_Ctg_Id])) OR (((Categorie_Niveau_Req.Niv6)=[Formulaires]![Journal_Frm]![FILTRE_Jrn_Quoi_Ctg_Id]));
Est ce possible svp ? Si oui, comment ?
Cordialement.
Partager