XL 2010 Listbox à choix multiples: comment renvoyer en vba les choix dans le tableau?

cgpa

XLDnaute Occasionnel
Bonjour le forum,

J'ai créé un userfom avec entre autres données une liste à choix multiples. Tout fonctionne sauf pour renvoyer la sélection multiple de la listbox3 dans une seule cellule du tableau.
Selon mon fichier, j’aimerais que les choix sélectionnés apparaissent sur la feuille "ventes" en colonne H. Si ce n'est pas possible, les choix peuvent se retrouver chacun dans une colonne séparée.
Le but final est de servir de base à un publipostage d'étiquettes (mais là, pas de problème).
Quelqu'un peut-il corriger mon code svp (code du Userfom2) ?
Un tout grand merci.
En pj le fichier très allégé.
Bonne journée!
 

Pièces jointes

  • ventes allégé.xlsm
    33.8 KB · Affichages: 17
Solution
Bonjour,

dans un choix multiples pour une listbox, tu est obligé de passer par une boucle pour récupérer toutes les valeurs sélectionnés çà devrait donner le code suivant

VB:
With Me.ListBox3
Dim valeur As String
 
  For i = 0 To ListBox3.ListCount - 1
      If .Selected(i) = True Then
      valeur = valeur & .List(i) & " "
      End If
  Next i
 Cells(ligne, 8).Value = valeur
 
End With

Bonne journée

Rossoneri83

XLDnaute Nouveau
Bonjour,

dans un choix multiples pour une listbox, tu est obligé de passer par une boucle pour récupérer toutes les valeurs sélectionnés çà devrait donner le code suivant

VB:
With Me.ListBox3
Dim valeur As String
 
  For i = 0 To ListBox3.ListCount - 1
      If .Selected(i) = True Then
      valeur = valeur & .List(i) & " "
      End If
  Next i
 Cells(ligne, 8).Value = valeur
 
End With

Bonne journée
 

cgpa

XLDnaute Occasionnel
Bonjour,

dans un choix multiples pour une listbox, tu est obligé de passer par une boucle pour récupérer toutes les valeurs sélectionnés çà devrait donner le code suivant

VB:
With Me.ListBox3
Dim valeur As String
 
  For i = 0 To ListBox3.ListCount - 1
      If .Selected(i) = True Then
      valeur = valeur & .List(i) & " "
      End If
  Next i
 Cells(ligne, 8).Value = valeur
 
End With

Bonne journée

Un tout grand merci, Rossoneri83: cela fonctionne parfaitement!
 

vgendron

XLDnaute Barbatruc
Hello le fil

je me suis permis de modifier tes plages nommées avec une formule decaler...
pour éviter d'avoir les entetes de tes colonnes dans les listbox
sinon, pour la boucle, c'est la meme que proposée par rossoneri83
 

Pièces jointes

  • ventes allégé.xlsm
    30.9 KB · Affichages: 16

cgpa

XLDnaute Occasionnel
Merci beaucoup vgendron. Je me demandais justement comment faire et voilà la solution. C'est bien plus lisible ainsi.

avec la propriété column width?
tu peux les définir directement dans les propriétés du control (comme tu as fait pour définir les rowsource)
en séparant les valeurs d'un ; ===> 100;200;300;400;500 (pas sur qu'il existe un autosize..)
Merci! Depuis hier soir, j'effectue une recherche pour pouvoir trier la combobox1 du userform 2 sur le contenu de la 2ème colonne (le nom du client). Je ne trouve pas la réponse. Quand je lance l'userform et que je tap la première lettre du nom du client (colonne 2), cela ne renvoie rien. Actuellement, c'est la première colonne qui effectue l'affichage (le code client). Comme il y aura plusieurs centaines d'entrées, en colonne 2, ce sera plus facile de voir apapraitre les noms plutôt que les numéros de client. Cela fonctionne si je renomme la plage List_clients en supprimant la colonne du code client de la liste, mais j'ai pourtant besoin de ce code client pour le renvoyer sur la feuille "ventes" à partir de l'userform (et s'il n'est plus dnas la plage nommée, je le perds). Est-ce possible? Sinon, il me restera à déplacer la colonne "code client" pour que celle du nom soit en premier dans la plage nommée, cela fonctionne,m ais ma feuille "clients" est désorganisée. Avez-vous une idée, car je ne trouve pas sur le forum ni sur le web. Merci!
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour cgpa
Bonjour le Fil ,le Forum
pas évident de reproduire ce que tu demandes un fichier avec ce que tu as et ce que tu veux !
il doit être possible de récupérer la Liste en fonction de la recherche dans la Deuxième Colonne!
Bonne journée
jean marie
 

cgpa

XLDnaute Occasionnel

Va faire un tour par ici: tu devrais sans doute trouver ton bonheur

Merci Vgendron. C'est une fameuse bible que vous proposez là. J'y ai trouvé ce qui peut répondre à mes attentes mais vraisemblablement je ne suis pas capable de tout adapter à ma situation. Je bug sur la formule pour lui dire où se trouve la base de donnée, puis sur le renvoi vers la feuille. Accepteriez-vous de jeter un oeil sur l'userform 2 ?
 

Pièces jointes

  • vente allégé2.xlsm
    60 KB · Affichages: 10

cgpa

XLDnaute Occasionnel
Bonjour
j'ai supprimé dans un premier temps
VB:
Application.Goto.
et ca semble fonctionner !
jean marie
Merci beaucoup Jean-Marie, effectivement cel fonctionne. Il me reste un dernier souci pas trop grave. Avec cette nouvelle formule, j'ai perdu le code client quelque part et je ne vois pas comment modifier le vba. Les plages sont nommées. Ce qui m'importe surtout, c'est maintenant de pouvoir utiliser la textbox 13 qui propose un choix sur base du nom du client dans la listbox4. Mais il me serait quand même utile d'avoir le code client qui apparaisse (pas nécessairement dans l'userfom2) et surtout qu'il soit renvoyé sur la feuille des ventes. Faut-il que je déplace la colonne du code client sur ma feuille "clients"? J'ai trouvé!
 

Pièces jointes

  • vente allégé2.xlsm
    60.1 KB · Affichages: 5
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 336
Membres
103 190
dernier inscrit
silverwolf854