---Soumis par Dev Ashish---
Limiter le contenu d'une liste (combo ou zone de liste).
(Q) Comment peut-on limiter le contenu d'une liste par un critère basé sur la valeur d'un autre contrôle (éventuellement, une autre liste)?
(A) Une façon facile est d'assigner un énoncé dynamique SQL à la propriété RowSource du contrôle à restreindre, à partir du contrôle possédant le critère.
Supposons deux combo box, cbxCombo1 et cbxCombo2. Le RowSourceType de cbxCombo1 est "Field List" et son RowSource est la table Category. cbxCombo2 possède rien sous RowSource.
Dans ce cas, ajouter le code suivant dans la procédure événementielle AfterUpdate du contrôle cbxCombo1 pour assigner la propriété RowSource requise pour cbxCombo2.
'**************** Code Start ************* Private Sub cbxCombo1_AfterUpdate() Dim strSQL As String strSQL = "Select " & Me!cbxCombo1 strSQL = strSQL & " from Categories" Me!cbxCombo2.RowSourceType = "Table/Query" Me!cbxCombo2.RowSource = strSQL End Sub '**************** Code End *************
Pour filtrer les enregistrements d' un combo/listbox basé sur la valeur choisie d'un autre combo/listbox, vous pouvez également utiliser un requête sauvegardée qui utilise un paramètre basé sur la valeur du premier contrôle:
Select PeopleID, PeopleName from tblPeople Where PeopleID = Forms!FormName!NameOfFirstControl;
Et alors, il vous faut utiliser un Requery sur le second combo/listbox, dans la procédure événementielle AfterUpdate du premier contrôle.
Private Sub NameOfFirstControl_AfterUpdate()
Me!NameOfSecondControl.Requery
End Sub