Bonjour,
J'ai un petit soucis avec la gestion de listindex sur une listbox. Je souhaite savoir si l'utilisateur a sélectionné au moins 1 ligne...
Dans un formulaire, j'ai une listbox qui est renseignée ainsi:
A côté de cette listbox, j'ai placé 2 boutons (Aucun, Tous):
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 ' Récupérer le tableau (Nom, Prenom, NLicence, Class. S., Class. D, Class. DM) Dim oTblNomPrenomLicence() As Variant oTblNomPrenomLicence = fctTblNomPrenomLicence ' Remplir la listbox With Me.lstJoueurs .columnCount = 3 '.List = Application.WorksheetFunction.Transpose(oTblNomPrenomLicence) .MultiSelect = fmMultiSelectMulti For i = LBound(oTblNomPrenomLicence, 2) To UBound(oTblNomPrenomLicence, 2) .AddItem .List(.ListCount - 1, 0) = oTblNomPrenomLicence(1, i) ' Nom .List(.ListCount - 1, 1) = oTblNomPrenomLicence(2, i) ' Prénom .List(.ListCount - 1, 2) = oTblNomPrenomLicence(3, i) ' Licence Next i .Selected(0) = True ' Sélectionner la 1er joueur End With
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub btJoueursAucun_Click() ' Désélectionner tous les joueurs For i = 0 To Me.lstJoueurs.ListCount - 1 Me.lstJoueurs.Selected(i) = False Next i End SubSur la validation du formulaire, je contrôle que l'utilisateur a sélectionné au moins une ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub btJoueursTous_Click() ' Sélectionner tous les joueurs For i = 0 To Me.lstJoueurs.ListCount - 1 Me.lstJoueurs.Selected(i) = True Next i End Sub
Seulement, voici le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 If Me.lstJoueurs.ListIndex = -1 Then MsgBox "Veuillez sélectionner un ou plusieurs joueurs.", vbExclamation, "Erreur: Aucune sélection" Exit Sub End If
- si je valide le formulaire sans aucune autre action -> Me.lstJoueurs.ListIndex = 0 (Normal j'ai sélectionné la 1ère ligne au remplissage de la listbox)
- si je clique sur le bouton Tous -> Me.lstJoueurs.ListIndex = 0
- si je clique sur le bouton Aucun -> Toutes les lignes sont désélectionnées mais Me.lstJoueurs.ListIndex = 0
- si je clique sur la 1ère ligne -> Toutes les lignes sont désélectionnées mais Me.lstJoueurs.ListIndex = 0
Pourquoi listindex est-il toujours à 0?
L'aide VBA indique pourtant ListBox.ListIndex, ListBox.Selected
Merci de m'avoir lu!
Gdal
Partager