bonjour,
Je dispose de 4 formulaires imbriqués les uns dans les autres :
- formulaire principal : FrmPrincipal2
- sous formulaire : frm Personnel2
- sous-sous formulaire : frmFormation2
- sous-sous-sous formulaire : frmRecyclage
Dans mon formulaire principal, j'ai juste placé en haut des listes déroulantes indépendantes qui servent pour choisir des critères et alimentent un bouton macro "Rechercher" qui filtre les sous-formulaires (code ci dessous).
Quand je me sers de critères (de champs) étant sur le formulaire frmPersonnel2, pas de soucis. Par contre, quand le critère porte sur un champ du sous-sous formulaire frmFormation2, ça ne marche plus.
Voilà le code, je pense que c'est en bas, j'ai mis deux With pour qu'il filtre sur deux formulaires. Je crois pas que cela se fasse comme cela.
Code vba : 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 Private Sub Commande16_Click() Dim strFiltre As String Dim suivi As Integer On Error Resume Next strFiltre = "" 'Filtre sur les noms If Me.FiltreParNom <> "" Then strFiltre = "([NomPrenom]='" & Me.FiltreParNom & "')" suivi = 1 End If 'Filtre sur les dates 'Date mini If Me.FiltreParDateMin <> "" Then If suivi = 1 Then strFiltre = strFiltre & " AND " & "([DateFormation] >= #" & Format(Me.FiltreParDateMin, "mm/dd/yyyy") & "#)" Else strFiltre = "([DateFormation] >= #" & Format(Me.FiltreParDateMin, "mm/dd/yyyy") & "#)" End If suivi = 1 End If 'Filtre sur les dates 'Date maxi If Me.FiltreParDateMax <> "" Then If suivi = 1 Then strFiltre = strFiltre & " AND " & "([DateFormation]<=#" & Format(Me.FiltreParDateMax, "mm/dd/yyyy") & "#)" Else: strFiltre = "([DateFormation]<=#" & Format(Me.FiltreParDateMax, "mm/dd/yyyy") & "#)" End If suivi = 1 End If 'Filtre sur le service If Me.FiltreParService <> "" Then If suivi = 1 Then strFiltre = strFiltre & " AND " & "([Service]='" & Me.FiltreParService & "')" Else: strFiltre = "([Service]='" & Me.FiltreParService & "')" End If suivi = 1 End If 'Filtre sur le type de formation If Me.FiltreParFormation <> "" Then If suivi = 1 Then strFiltre = strFiltre & " AND " & "(Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form![TypeFormation]='" & Me.FiltreParFormation & "')" Else: strFiltre = "(Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form![TypeFormation]='" & Me.FiltreParFormation & "')" End If suivi = 1 End If 'Filtre sur le type d'organisme If Me.FiltreParOrganisme <> "" Then If suivi = 1 Then strFiltre = strFiltre & " AND " & "([Organisme]='" & Me.FiltreParOrganisme & "')" Else: strFiltre = "([Organisme]='" & Me.FiltreParOrganisme & "')" End If suivi = 1 End If 'Filtrer le sous-formulaire With Me.[frm personnel2].Form .Filter = strFiltre .FilterOn = True End With 'Filtrer le sous-sous formulaire With Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form .Filter = strFiltre .FilterOn = True End With End Sub
Merci de m'aider.
Partager