Création
d'entreprise
Posez votre question Signaler

VBA EXCEL - données multiples listbox [Résolu]

malbjp 54Messages postés 7 octobre 2005Date d'inscription - Dernière réponse le 22 nov. 2007 à 13:53
Bonjour
Je voudrais sélectionner plusieurs nombres à partir d'une listbox et pouvoir les récupérer pour les utiliser ensuite.
Par le biais de la fenêtre Exécution, ces nombres apparaissent mais comment les récupérer pour les stocker dans des variables.
La fenêtre Exécution peut-elle être insérée dans une procédure ?
Merci de vos suggestions.
Lire la suite 

VBA EXCEL - données multiples listbox »

7 réponses
Réponse
+10
moins plus
Je t'ai fait un petit exemple. Un Form avec une ListBox et un bouton.
A l'initialize du Form (option MultiSelect), un met en place une liste d'items.
Après avoir choisi plusieurs éléments, en cliquant sur le bouton, on stocke la sélection dans les cellules de la colonne A de Feuil1.
Private Sub UserForm_Initialize()
  ListBox1.Clear
  ListBox1.AddItem "tata"
  ListBox1.AddItem "tete"
  ListBox1.AddItem "titi"
  ListBox1.AddItem "tintin"
  ListBox1.AddItem "toto"
  ListBox1.AddItem "toutou"
  ListBox1.AddItem "tutu"
  ListBox1.AddItem "tyty"
End Sub

Private Sub CommandButton1_Click()
  Dim I As Integer, J As Integer
  Sheets("Feuil1").Range("A1:A8").ClearContents
  J = 0
  For I = 0 To 7
    If ListBox1.Selected(I) Then
      J = J + 1
      Sheets("Feuil1").Cells(J, 1).Value = ListBox1.List(I)
    End If
  Next
End Sub
Evidemment, on peut stocker aussi les valeurs dans un tableau plutôt que dans une feuille, etc. Ensuite on en fait ce qu'on veut...
Ajouter un commentaire
Réponse
+6
moins plus
Bonjour malbjp,

Une méthode, par exemple : utiliser la propriété Selected. Si tu as 10 items dans ta liste (indexés de 0 à 9), tu peux faire une boucle :
For i = 0 To 9
  If ListBox1.Selected(i) = True Then
    '<l'item a été sélectionné>
  End If
Next i
Selected est à True si l'item est sélectionné, et à False sinon.
Ajouter un commentaire
Réponse
+3
moins plus
Salut, en fait c'est tout simple, tu fais une boucle balayant les valeurs de ta liste et pour chacune ".Selected(index)" te permet de savoir si elle est ou non sélectionnée et ".List(index)" te donne sa valeur.

Donc en code, cela donnerait quelque chose du genre :
(je suppose qu'il y a N lignes dans la liste)

for i = 0 to N-1
If ListBox.Selected(i) then
msgbox "la valeur suivante est sélectionnée : " & ListBox.List(i)
end if
next i
Ajouter un commentaire
Réponse
+1
moins plus
Bonsoir
Merci de t'intéresser à mon problème...
Voilà ce que j'ai mis dans le contrôle Valider

Private Sub valid_Click()
Dim compt
For compt = 0 To (listchoix.ListCount - 1)
If listchoix.Selected(compt) = True Then
Debug.Print listchoix.List(compt)
End If
end sub

mais comment faire pour récupérer la sélection 1, 7 et 9 par exemple, pour pouvoir les utiliser ensuite ?
si tu as une idée je suis preneur ... merci
Ajouter un commentaire
Réponse
+1
moins plus
Bien Joué!!!
Marco
Ajouter un commentaire
Réponse
+1
moins plus
j'ai une question j'ai le meme probleme sauf que je dois choisir plusieurs elements mais j'arrive pas a les recuperes la methode a Marco recupere qu'une seule donnée est ce que l'un de vous arrive a me dire comment faire svp
Ajouter un commentaire
Réponse
+1
moins plus
comment je peux mettre des informations ds une liste box à partir de différentes feuilles d'un seul classeur
Ajouter un commentaire
Ce document intitulé « VBA EXCEL - données multiples listbox » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?