ListBox

Tam -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. Tam
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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