Bonjour,
Pour faire cela, à mon avis le plus simple est de d'inscrire les critères de filtration dans une variable texte, variable utilisée ensuite comme filtre pour le formulaire et repris ensuite pour l'état (rapport).
Pour construire le filtre:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Private Sub Filtrer()
Dim ctl As Control, sFiltre As String
sFiltre = ""
For Each ctl In Me.Controls
If ctl.ControlType = acComboBox Or ctl.ControlType = acCheckBox Then
If Not IsNull(ctl) Then
sFiltre = sFiltre & " AND " & ctl.Name & " = " & ctl
End If
End If
Next
If sFiltre <> "" Then sFiltre = Mid(sFiltre, 6)
Debug.Print sFiltre
Me.Filter = sFiltre
Me.FilterOn = True '--- application du filtre, forçant un Requery
End Sub |
ensuite pour appeler le rapport:
DoCmd.OpenReport "eMailPays", acViewPreview, , Me.Filter '--- le filtre du formulaire est utilisé comme filtre du rapport
Par ailleurs, pour bien faire, un pays relevant d'une seule zone géographique, dans la table des organismes il suffit d'indiquer le pays pour connaître la zone géographique.
Dans la table des organismes, il faut absolument utiliser un identifiant (num. auto), même s'il est certain qu'il n'y aura pas de doublons de noms.
Note: j'ai activé les options "Fenêtres superposées" et "Compacter lors de la fermeture".
Bonne continuation.
Partager