ListBox

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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
      1. 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 ?????