Si je veux tester si une sélection a été faite dans une listbox mono sélection cette condition fonctionne sansq soucis
VB:
If IsNull(UserForm6.ListBox1.Value) = True
Mais dans une listbox Multi sélection ?
Je voudrais éviter une boucle du genre :
VB:
For Compteur = 0 To (ListBox1.ListCount - 1)
If ListBox1.ListIndex = 0 Then
MsgBox "Vous devez sélectionner ....", vbCritical, "Message du système"
Exit Sub
End If
Next
Bonjour,
Si le test sans boucle pour voir s'il y a sélection ou pas est faisable, il n'en est pas de même pour le traitement des items sélectionnés, si multi-sélection.
Cela pourrait ressembler à ceci
Code:
Private Sub CommandButton1_Click()
Dim i As Long
If ListBox1.ListIndex <> -1 Then
For i = 0 To Me.ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
MsgBox Me.ListBox1.List(i) & vbLf & "ici traitement pour les items selectionnés"
ListBox1.Selected(i) = False
End If
Next i
ListBox1.ListIndex = -1
Else
MsgBox "Pas de selection" & vbLf & "Ici traitement si pas de selection"
End If
End Sub
'------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
ListBox1.ListIndex = -1
End Sub
Mon soucis est que j'ai pensé a utiliser la méthode décrite par jacky67 avec
VB:
Private Sub UserForm_Initialize()
ListBox1.ListIndex = -1
End Sub
mais cela ne marche que une fois, en effet si l'utilisateur ouvre l'userform il y a une liste, si il ne sélectionne rien pas de soucis j'ai bien mon ma message box.
Mais si il sélectionne un item et finalement le décoche et que la sélection est vide est bien si il appuie à nouveau sur le bouton valider et bien ça ne marche plus !