ListBox, ListIndex toujours égal à 0?
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:
Code:
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 |
A côté de cette listbox, j'ai placé 2 boutons (Aucun, Tous):
Code:
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 Sub |
Code:
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 |
Sur la validation du formulaire, je contrôle que l'utilisateur a sélectionné au moins une ligne:
Code:
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 |
Seulement, voici le résultat:
- 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