Recup multiselection de listbox dans une cellule

jpub Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  2. jpub Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   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. jpub Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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