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. 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
    0
    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
      0
      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
        0
      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
        0