Recup multiselection de listbox dans une cellule

Fermé
jpub Messages postés 43 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 19 janvier 2016 - Modifié par pijaku le 10/07/2014 à 12:05
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 juil. 2014 à 12:09
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

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 9/07/2014 à 12:27
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
jpub Messages postés 43 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 19 janvier 2016 1
Modifié par pijaku le 10/07/2014 à 12:10
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
jpub Messages postés 43 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 19 janvier 2016 1
Modifié par pijaku le 10/07/2014 à 12:06
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 10/07/2014 à 12:10
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