<Retour Grenier>

Début de page Question

Comment mettre en place une liste à sélection multiple, et la gérer en Visual Basic ?

Pour utiliser ce qui suit, vous avez besoin de savoir définir un événement dans un formulaire, compiler du code, et exécuter du code.

 

Début de page Réponse

On suppose qu'une table Clients (par exemple) est créée.

  1. Ouvrez un formulaire en mode Création.
  2. Si nécessaire, faites apparaître la boîte à outils (par le menu Affichage / Boîte à outils ou l'icône ).
  3. Vérifiez que l'Assistant Contrôle est activé.
  4. Cliquez sur l'icône "Liste modifiable" puis cliquez sur le formulaire.
  5. Suivez les étapes de l'assistant pour construire votre liste, basée sur la table Clients.
  6. Une fois la liste terminée, cliquez dessus (le formulaire étant toujours en mode Création) puis faites apparaître ses propriétés en cliquant sur l'icône
  7. Dans les propriétés de l'onglet "Autres", donnez à la propriété "Nom" la valeur "lstClients".
  8. Toujours dans ces propriétés, donnez à la propriété "Sélection multiple" la valeur "Simple" (ou "Etendu").

Si vous testez maintenant votre formulaire, il est possible de sélectionner plusieurs clients dans la liste.

  1. Réouvrez le formulaire en mode Création.
  2. Créez maintenant un bouton de commande (sans assistant).
  3. Grâce aux propriétés, nommez le bouton btnListe.
  4. Dans l'événement "Sur clic" du bouton, tapez le code suivant, qui se charge d'afficher l'un après l'autre les clients sélectionnés (ou un message d'avertissement si aucun client n'a été sélectionné) :
Private Sub btnListe_Click()
Dim varI As Variant

If Me.lstClients.ItemsSelected.Count = 0 Then
	MsgBox "Aucun client n'a été sélectionné"
Else
	For Each varI In Me!lstClients.ItemsSelected
		MsgBox Me!lstClients.ItemData(varI)
	Next varI
End If
End Sub

A vous maintenant d'aménager pour en faire bon usage ! Vous pouvez par exemple vous en servir pour filtrer un formulaire ou un état (voir les commandes OpenForm ou OpenReport).
Pour plus de détails, consultez bien sûr l'aide d'Access concernant la collection ItemsSelected et la propriété ItemData.