Bonjour,
Je sèche sur un petit problème...
Je souhaite faire un formulaire de recherche, avec des choix par listes déroulantes.
Pour faire mon choix, j'ai jusqu'à 3 critères, donc 3 listes déroulantes à remplir : Materials, Type et SousType
En fonction de ce que je choisis pour chacun des critères, je souhaite qu'une liste dans un sous-formulaire se mette à jour automatiquement.
Lorsque je sélectionne mon premier critère (Materials), pas de problème, ça fonctionne. Par contre, lorsque je sélectionne mon deuxième critère (Type), toutes les lignes qui on le type sélectionné apparaissent, et pas seulement celles du Material sélectionné... Idem, évidemment, lorsque je passe à mon troisième critère !
Pour vous aider à m'aider, voilà le bout de code qui pose problème :
Je pense qu'il faudrait mettre un And sur l'update de ListeType, mais je ne sais pas où ni comment : j'ai essayé plusieurs solutions, mais sans succès...
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54 Private Sub ListeMaterial_AfterUpdate() ' ------------------------------------------------------------------------------------------------ ' Filtrer la liste par le Material. ' ------------------------------------------------------------------------------------------------ Dim CodeMaterials As Long CodeMaterials = DNull(Me.ListeMaterial.Value) If CodeMaterials = 0 Then Me.LISTE_SF.Form.RecordSource = "Select * From CHOIX_LISTE_SOURCE" Else Me.LISTE_SF.Form.RecordSource = "Select * From CHOIX_LISTE_SOURCE Where CODE_MATERIAL = " & CodeMaterials End If Me.LISTE_SF.Requery End Sub Private Sub ListeType_AfterUpdate() ' ------------------------------------------------------------------------------------------------ ' Filtrer la liste par le Material puis par le type. ' ------------------------------------------------------------------------------------------------ Dim CodeTypes As Long CodeTypes = DNull(Me.ListeType.Value) If CodeTypes = 0 Then Me.LISTE_SF.Form.RecordSource = "Select * From CHOIX_LISTE_SOURCE" Else Me.LISTE_SF.Form.RecordSource = "Select * From CHOIX_LISTE_SOURCE Where CODE_TYPE = " & CodeTypes End If Me.LISTE_SF.Requery End Sub Private Sub ListeSousType_AfterUpdate() ' ------------------------------------------------------------------------------------------------ ' Filtrer la liste par le Material puis par le type puis par le sous-type. ' ------------------------------------------------------------------------------------------------ Dim CodeSousTypes As Long CodeSousTypes = DNull(Me.ListeSousType.Value) If CodeSousTypes = 0 Then Me.LISTE_SF.Form.RecordSource = "Select * From CHOIX_LISTE_SOURCE" Else Me.LISTE_SF.Form.RecordSource = "Select * From CHOIX_LISTE_SOURCE Where CODE_SOUSTYPE = " & CodeSousTypes End If Me.LISTE_SF.Requery End Sub
En espérant que quelqu'un sera en mesure de me donner un coup de main, car je n'y connais pas grand chose en VBA...
D'avance merci
MelaAllIn
Partager