ListBox

Fermé
Tam - 29 juin 2016 à 13:35
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 30 juin 2016 à 15:56
Bonjour,
je suis débutant en VBA.
J'ai un petit soucis, je n'arrive pas à récuperer la sélection multiple de ma listbox.
l'utilisateur doit choisir dans la listbox ce qu'il souhaite selectionner à l'aide du clique de la souris. Je souhaiterais récuperer la sélection (qui peut être multiple).


Private Sub LB01_Selection_Click()

For j = 0 To LB01_Selection.ListCount - 1
If LB01_Selection.Selected(j) = True Then
MsgBox (LB01_Selection.Value)
End If
Next

End Sub

D'avance merci

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 juin 2016 à 13:53
Bonjour

capture d écran de l'indispenasble
https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-G


0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
29 juin 2016 à 14:04
Bonjour,
'sur choix temps reel
Private Sub ListBox1_Change()
    For j = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(j) = True Then
            MsgBox ListBox1.List(j)
        End If
    Next j
End Sub


ou avec un bouton pour traitement des choix
Private Sub CommandButton1_Click()
    For j = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(j) = True Then
            MsgBox ListBox1.List(j)
        End If
    Next j
End Sub
0
Bonjour

Je m'excuse mais je n'y arrive pas...
mon code se fait en deux parties :


1) Ouverture du userform
Private Sub UserForm_Activate()
If Range("C3") <> "" And Range("C4") <> "" Then
LB01_Selection.RowSource = Range("C3:" & Range("C3").End(xlDown).Address).Address
LB01_Selection.MultiSelect = fmMultiSelectMulti
ElseIf Range("C3") <> "" And Range("C4") = "" Then
LB01_Selection.RowSource = Sheets("Liste").Range("C3").Address
LB01_Selection.MultiSelect = fmMultiSelectSingle
Else: LB01_Selection.RowSource = Sheets("Liste").Range("C2").Address
End If
End Sub

2) Clique sur le bouton "Valider" après selection dans la LB
Private Sub CB01_Valider_Click()
For j = 0 To LB01_Selection.ListCount - 1
If LB01_Selection.Selected(j) = True Then
MsgBox LB01_Selection.List(j)
selection = True
Else: selection = False
End If
Next
If selection = False Then
MsgBox ("sélectionner au moins un échantillon")
Exit Sub
...

Je ne comprend pas ce qui ne colle pas...
Merci pour vos réponses
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
30 juin 2016 à 15:56
Bonjour,

Evitez de mettre des mots reserves comme Selection en nom de variable:

Private Sub CB01_Valider_Click()
    Sel = False
    For j = 0 To LB01_Selection.ListCount - 1
        If LB01_Selection.Selected(j) = True Then
            MsgBox LB01_Selection.List(j)
            Sel = True
        End If
    Next j
    If Sel = False Then
        MsgBox ("sélectionner au moins un échantillon")
        Exit Sub
    End If
End Sub


pour l'initialisation de l'UF, les cellules C3 et C4 sont de quelle feuille ?????
0