Recup multiselection de listbox dans une cellule

Bonjour,

je me permet de venir vous car j'ai un petit problème avec une listbox autorisant la multiselection.

j'initialise ma listbox au lancement de l'userform de la façon suivante :

Private Sub UserForm_Activate()

' charge les listboxs à l'ouverture de l'userform
Dim i As Long
' remplissage Type de devis
ListBox1.MultiSelect = 1 ' permet la multiselection
With ThisWorkbook.Worksheets("REFERENTIELS")
  For i = 3 To 50
      ListBox1.AddItem .Cells(i, 4)
  Next i
  End With

End sub


jusque là, pas de problème et je voudrais récupérer les sélections dans une cellule en les séparant par un "&".
Voilà ce que j'ai écrit (source web modifié)

Private Sub CommandButton1_Click()

 For i = 0 To Me.ListBox1.ListCount - 1
      If ListBox1.Selected(i) = True Then
        ThisWorkbook.Worksheets("TEST").Range("A1").Value =  " " & "&"ListBox1.List(i)
      End If
    Next i

end sub


mais le problème et que cela ne marche pas et ne récupère qu'une seule valeur.

L'un de vous aurait-il une solution ?

Merci d'avance.

Cordialement,

Jonathan

2 réponses

  1. Super merci,

    mais cela ne marche pas, j ai une erreur d'exécution de type 9
    (l indice n'appartient pas à la sélection)

    pour info mes listbox se chargent au démarrage avec une
    Private Sub UserForm_Activate()
    et la répération des sélections de ces listbox se fait dans une
     Private Sub CommandButton1_Click()
    Merci encore

    Private Sub UserForm_Activate()
    Dim i As Long
    
    ' charge les listboxs à l'ouverture de l'userform
    
    ' remplissage Type de devis
    ListBox1.MultiSelect = 1 ' permet la multiselection
    With ThisWorkbook.Worksheets("REFERENTIELS")
      For i = 3 To 50
          ListBox1.AddItem .Cells(i, 4)
      Next i
      End With
    
    END SUB
    
    Private Sub CommandButton1_Click()
    
     For i = 0 To ListBox1.ListCount - 1
          If ListBox1.Selected(i) = True Then
             ThisWorkbook.Worksheets("DEVIS").C("A1").Value = ThisWorkbook.Worksheets("DEVIS").Range("A1").Value & " " & ListBox1.List(i)
          End If
        Next i
    
    END SUB
    


    Jonathan
    1. correction de la seconde partie mais ça ne marche toujours pas

      Private Sub CommandButton1_Click() 
      For i = 0 To ListBox1.ListCount - 1
       If ListBox1.Selected(i) = True Then
       ThisWorkbook.Worksheets("DEVIS").Range("A1").Value = ThisWorkbook.Worksheets("DEVIS").Range("A1").Value & " " & ListBox1.List(i)
       End If
       Next i
      
      end sub
    2. Modérateur
      Bonjour,

      Essayez ceci :

      Private Sub CommandButton1_Click() 
      Dim MonString As String
      For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
          MonString = MonString  & " " & ListBox1.List(i)
        End If
      Next i
      With ThisWorkbook.Worksheets("DEVIS").Range("A1")
        .Value = MonString
      End With
      End sub


      EDIT : mes amitiés à Polux31 au passage
  2. Bonjour,

    Il faut remplacer:
    ThisWorkbook.Worksheets("TEST").Range("A1").Value = " " & "&"ListBox1.List(i)


    Par:
    ThisWorkbook.Worksheets("TEST").Range("A1").Value = ThisWorkbook.Worksheets("TEST").Range("A1").Value  & " " &  ListBox1.List(i) 


    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau