J'ai réussi à me créer un code pour me permettre dans mon formulaire de
faire des sélections multiples en cascade. Voici un peu comment il fonctionne.
Ma première zone de liste possède comme valeurs celles de la première
colonne de ma table et lorsque je sélectionne un ou plusieurs choix, ma 2è
zone de liste prendra pour RowSource la 2è colonne de ma table ainsi que pour
condition WHERE les sélections faites dans ma première zone de liste. Jusqu'à
maintenant tout fonctionne.
Par contre, je voudrais que lorsque je sélectionne un ou plusieurs éléments
de ma 2è zone de liste, ma 3e zone de liste prenne pour RowSource la 3e
colonne de ma table et pour Conditions WHERE les sélections faites
précédemment dans ma 1ère zone de liste et celles faites dans ma 2è zone de
listes. J'ai réussi à le faire en parti, sauf qu'il ne prend en considération
que la première Valeur de ma 1ère zone de liste seulement, peu importe la
sélection que j'y ai fait. Voici à quoi ressemble mon code
Private Sub Liste0_Click() ' Lorsque je clique voici ce qui se passe
Dim Q As String
Q = "SELECT DISTINCT Colonne 2 FROM tbl_Prix WHERE (false)"
'Sélectionne la colonne Segment de la table Prix
For i = 0 To Liste0.ListCount - 1
If Liste0.Selected(i) Then
Q = Q & " OR (Colonne 1 ='" & Liste0.Column(0, i) & "')"
End If
Next i
Liste2.RowSource = Q 'La liste 2 prendra les valeurs de Q
Liste2.Requery 'La liste 2 se rafraichira sur chaque clic
MsgBox Q
End Sub
Private Sub Liste2_Click()
Dim Q As String
Dim R As String
Q = "SELECT DISTINCT Colonne 3 FROM tbl_Prix WHERE (false) "
'Sélectionne la colonne Segment de la table Prix
R = "OR (Colonne 1 ='" & Liste0.Column(0, i) & "')" 'Condition
WHERE = OR colonne Brasseur seulement les sélections faites dans la première
zone de liste
For i = 0 To Liste2.ListCount - 1
If Liste2.Selected(i) Then
Q = Q & R & " AND (Colonne 2 ='" & Liste2.Column(0, i) & "')"
End If
Next i
MsgBox Q
Liste4.RowSource = Q 'La liste 2 prendra les valeurs de Q
Liste4.Requery 'La liste 2 se rafraichira sur chaque clic
Donc, il serait plus clair de ne pas mettre de i dedans.
For i = 0 To Liste2.ListCount - 1 If Liste2.Selected(i) Then Q = Q & R & " AND (Colonne 2 ='" & Liste2.Column(0, i) & "')" End If Next i MsgBox Q Liste4.RowSource = Q 'La liste 2 prendra les valeurs de Q Liste4.Requery 'La liste 2 se rafraichira sur chaque clic
Donc, il serait plus clair de ne pas mettre de i dedans.
For i = 0 To Liste2.ListCount - 1
If Liste2.Selected(i) Then
Q = Q & R & " AND (Colonne 2 ='" & Liste2.Column(0, i) & "')"
End If
Next i
MsgBox Q
Liste4.RowSource = Q 'La liste 2 prendra les valeurs de Q
Liste4.Requery 'La liste 2 se rafraichira sur chaque clic
Donc, il serait plus clair de ne pas mettre de i dedans.
For i = 0 To Liste2.ListCount - 1 If Liste2.Selected(i) Then Q = Q & R & " AND (Colonne 2 ='" & Liste2.Column(0, i) & "')" End If Next i MsgBox Q Liste4.RowSource = Q 'La liste 2 prendra les valeurs de Q Liste4.Requery 'La liste 2 se rafraichira sur chaque clic