Userform LisBox multiple sélection

Bonjour,

J'ai une question concernant un UserForm avec une ListBox à choix multiples. Je voudrais sélectionner plusieurs éléments dans la liste que je voudrais par la suite imprimer, mais :

  • je ne sais pas comment faire pour récupérer les valeurs sélectionner,
  • copier ces valeurs pour les coller dans d'autres cellules d'une autre feuille.

Cordialement,

U_goffu

Bonjour,

Dans le cas d'une multisélection, il faut tester la propriété Selected de chaque élément de la liste pour détecter les éléments sélectionnés. La méthode habituelle est de les recueillir dans un tableau et d'affecter les valeurs du tableau à une plage.

Une possibilité de méthode (concrètement) : tu dimensionnes un tableau (dynamique) au départ sur le nombre d'éléments de la liste ; tu défiles les éléments dans une boucle ; pour chaque élément, si .Selected, tu l'affectes à un élément du tableau en utilisant une variable que tu incrémentes au fur et à mesure (qui contiendra à la fin le nombre d'éléments sélectionnés que tu as mis dans le tableau) ; tu redimensionnes ton tableau sur le nombre d'éléments (avec Preserve pour en conserver le contenu) ; tu dimensionnes la plage d'affectation à la dimension du tableau ; tu affectes le tableau à la plage (si tableau à une dimension, il faudra le transposer lors de l'affectation).

Cordialement.

Bonjour,

Merci de t'être penché sur le sujet MFerrand. J'ai à peu près compris ce que tu m'as demandé de faire. Entre temps, j'ai trouvé un fichier sur le net avec exactement ce que je voudrais faire. Néanmoins, je n'arrive pas à appliquer le code à mon cas, car il m'indique une erreur : Error 9 'Subscipt out of range'

Mon fichier :

Le fichier trouvé : Listbox_selection_methods

Je voudrais que dans mon userform Impression etiquette, je puisse sélectionner plusieurs codes produits et que ceux-ci viennent se coller sur une autre feuille "impression code barre" et renvoyer le code barre associé au code produit. Je ne sais pas si c'est suffisament clair.

Cordialement,

U_goffu

Impossible regarder ton fichier, erreur permanente qui se signale comme erreur système et se relance sans arrêt.

Aucune manipulation possible même fermer le classeur, ce que j'ai dû faire deux fois de façon hard...

Ah mince, je ne comprends pas car j'arrive à travailler dessus moi. En tout cas merci d'avoir essayer.

Bonjour à tous,

Voici un document qui je l'espère ne va pas faire planter votre excel ^^.

J'ai tenté de faire quelque chose, mais ceci ne marche pas. Pouvez-vous m'aider?

Ce que j'aimerais faire:

- dans l'Userform impression code barre, se trouve une ListBox avec plusieurs code produit qui se trouve sur la feuille "Stock" en colonne A. Je voudrais sélectionner plusieurs codes dans la liste et quand j'appuierai sur Imprimer, j'aimerais que ce code va sur la feuille "Impression code barre" et renvois la valeur code barre colonne N dans la feuille "Stock". et que du coup sa incrémente la copie.

Je ne sais pas si c'est tout à fait clair.

Bonjour,

L'autre avait dû être endommagé lors du transit... ? Celui-ci normal !

Bon juste 2 petits trucs anodins sur ta proc. qui plantait. Tu aurais dû trouver ça facilement si tu indentais correctement ton code, évitais certaines simplifications comme Next tout seul (dès qu'il y en a 2 il faut chercher quelle boucle...).

Une fois rectifié, la proc. va au bout mais tu n'as pas fini ? Le userform reste ouvert ?...

Quand le débogueur t'annonces "Next sans For" on regarde bien sûr si c'est ça, ça arrive, mais 3 fois sur 4 au moins c'est pas tout à fait ça : ici c'était un End If qui manquait.

La seconde était un xlContinuous écrit xlContinous. VBA cherchait une procédure introuvable... A ce propos, je ne l'ai pas vu immédiatement parce que écrit xlContinous, ce qui veut dire que tu as tapé la majuscule : le truc c'est de taper le code systématiquement en minuscules, VBA rétablit les majuscules ce qui te permet de voir que tu n'as pas fait de faute de frappe...

Private Sub CommandButton1_Click() 'impression
    'Application.ScreenUpdating = False
    Dim J As Long
    Dim bSelected As Boolean
    Dim i As Integer
    Dim m As Integer
    Dim nbligne As Long
    Dim nbcol As Integer
    Dim Lbloop As Long, Lbcopy As Long
    Set Ws1 = Sheets("Stock")
    bSelected = False
    J = Ws1.Range("A" & Rows.Count).End(xlUp).Row
     nbligne = ListBox1.ListCount - 1
    nbcol = ListBox1.ColumnCount - 1
    For i = 2 To J
        If ListBox1.Selected(i) = True Then
            bSelected = True
            Exit For
        End If
    Next
    If bSelected = True Then
        With Sheets("Impression code barre").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            For i = 0 To nbligne
                If ListBox1.Selected(i) = True Then
                    Lbcopy = Lbcopy + 1
                    For Lbloop = 0 To nbcol
                        .Cells(Lbcopy, Lbloop + 1) = ListBox1.List(i, Lbloop)
                    Next Lbloop
                End If
            Next
            For m = 0 To nbcol
                With Sheets("Impression code barre").Cells(Rows.Count, 1).End(xlUp).Offset(0, m).Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .Weight = xlMedium
                    .ColorIndex = 23
                End With
            Next
        End With
    Else
        MsgBox ("Vous devez sélectionner au moins un code produit")
    End If
    MsgBox "The Selected Data Are Copied.", vbInformation
    Sheets("Impression code barre").Select
End Sub

Cordialement.

Oui, je suis d'accord, j'ai pas trop géré sur ce coup là.

Néanmoins, merci beaucoup MrFerrand

Par contre, je galère un peu à renvoyer la valeur de la 14ème colonnes de la feuille "Stock".

Auriez-vous quelques conseil svp?

Bonjour,

J'ai continuer de tenter des choses mais en vain. Je n'arrive pas à renvoyer en fonction du code produit selectionné dans ma ListBox, les valeurs du code barre figurant sur la colonne indice 14 de la Feuille "Stock".

Quelqu'un aurait-il une idée?

Cordialement,

U_goffu

Rechercher des sujets similaires à "userform lisbox multiple selection"