Listbox vers cellules

Résolu
Bonjour,

Je souhaiterais insérer toutes les valeurs d'une listbox dans des cellules.

j'ai essayé d'insérer le nombre de ligne de la listbox dans ma feuille puis d'y copier mes données mais je suis bloqué a la première étape.

merci de m'aider

13 réponses

  1. Contributeur
    Avant de partir

    sans boucles inutiles (mais ca marche aussi)
    Private Sub CommandButton1_Click()
         Dim lig as byte
         lig = ListBox1.ListCount 
         Rows("1:" & lig).Insert 
         With Sheets(1) 
            .Range(.Cells(1, "C"), .Cells(lig, "E")) = ListBox1.List 
            .Range(.Cells(1, "A"), .Cells(lig, "A")) = ComboBox1 
        End With 
    End Sub


    Michel
    1. voici un exemple de l'outil:

      j'ouvre mon userform,

      dans une combobox: G52
      dans ma listbox:

      J04 5 Gris
      J09 8 Noir
      J02 10 rouge

      click sur le bouton -> insertion dans cellules:

      G52 J04 5 Gris
      G52 J09 8 Noir
      G52 J02 10 rouge

      j'ouvre à nouveau mon userform,

      dans une combobox: G53
      dans ma listbox:

      J03 8 vert
      J09 2 bleu
      J02 1 jaune
      J09 5 orange

      click sur le bouton-> insertion dans cellules:

      G53 J03 8 vert
      G53 J09 2 bleu
      G53 J02 1 jaune
      G53 J09 5 orange

      G52 J04 5 Gris
      G52 J09 8 Noir
      G52 J02 10 rouge
      .

      j'ai la formule pour insérer les valeurs correctement mais il me manque celle pour insérer le nombre de lignes suffisante exemple: pour le G52:insérer 3 lignes, pour le G53 4 lignes.

      je suis pas très compétent en Visual basic. Comment ajouter la variable Liscount à celle d'insertion?

      merci
      1. Contributeur
        Bonjour,

        Donc
        1/ chaque fois que tu appuies sur le bouton, la totalité de la listbox est copiée dans une seule cellule avec plusieurs lignes suivant le nombre de lignes dans la listbox ?
        2/ si G52 et G53 sont des adresses de cellules pourquoi G53 est au dessus de G52 ?

        Merci d'être précis et exhaustif dans tes explications: imagine un peu ce que cela te couterait si tu n'avais pas affaire avec des bénévoles....
      2. Bonjour,

        c'est difficile d'expliquer à distance sans support, je m'excuse de la perte de temps qui vous est occasionné.

        1/ A chaque appuies sur le bouton, la totalité de la listbox est copiée dans différentes cellules
        2/ le G52 et G53 ne sont pas des adresses de cellule, ce sont des valeurs exemple.

        mon exemple était maladroit, je l'ai donc refait avec les adresses des cellules:

        j'ouvre mon userform,

        dans une combobox: REP01
        dans ma listbox:

        pomme 5 Gris
        poire 8 Noir
        banane 10 rouge

        click sur le bouton -> insertion dans cellules:

        A C D E F
        1 REP01 pomme 5 Gris
        2 REP01 poire 8 Noir
        3 REP01 banane 10 rouge
        4

        j'ouvre à nouveau mon userform,

        dans une combobox: REP02
        dans ma listbox:

        Ananas 8 vert
        kiwi 2 bleu
        orange 1 jaune
        citron 5 orange

        click sur le bouton-> insertion dans cellules:
        A C D E F
        1 REP02 Ananas 8 vert
        2 REP02 kiwi 2 bleu
        3 REP02 orange 1 jaune
        4 REP02 citron 5 orange
        5 REP01 pomme 5 Gris
        6 REP01 poire 8 Noir
        7 REP01 banane 10 rouge

        en espérant qu'il soit plus explicite!
        .
      3. Contributeur
        OK, c'est bon: restitution sur 4 colonnes (D,E,F)et N lignes suivant la listbox; compilation au dessus de la présente
        ajout à chaque ligne de la valeur de la combo

        c'est dans le principe que t'avais proposé F89...4 (bonjour) et moi:reste l'ajout combo et la compilation au dessus

        Suis absent cet après midi...

        pour te familiariser avec les userform et contrôles, un tuto complet (presque)
        https://silkyroad.developpez.com/VBA/ControlesUserForm/
        https://silkyroad.developpez.com/VBA/UserForm/
      4. code pour insérer les valeurs Listbox:

        Dim x As Integer, Nb_L_ListBox As Integer
        With Worksheets("feuil1")
        For x = 1 To Me.ListBox1.ListCount
        .Cells(x + 1, 3) = Me.ListBox1.List(x - 1, 0)
        .Cells(x + 1, 4) = Me.ListBox1.List(x - 1, 1)
        .Cells(x + 1, 5) = Me.ListBox1.List(x - 1, 2)
        Next x


        il fonctionne correctement
        ----------------------------------------------------------------------------------------------------------------------------
        code pour insérer le nombre de ligne:

        Dim y As ...?
        For y =Listbox1.ListCount
        Rows("1:y")
        Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
        


        --------------------------------------------------------------------------------------------------------------------------
      5. Bonjour,

        J'aimerais pouvoir activer une feuille excel selon la valeur rentrer dans une textbox.

        J'ai tenter

        Sheets("TextBox7.Text").Activate

        mais cela ne fonctionne pas..

        Merci d'avance pour votre aide
    2. Re,

      empilage:

      colonne E1 a Ex

      listbox;
      E1,colonne1 1ere ligne
      E2,colonne2
      E3,colonne3
      E4,colonne1 2eme ligne
      E5,colonne2

      Private Sub CommandButton1_Click()
      Dim x As Integer, y As Integer
      With Worksheets("feuil1")
      For x = 1 To Me.ListBox1.ListCount
      y = (x * 3) - 2
      .Cells(y, 5) = Me.ListBox1.List(x - 1, 0)
      .Cells(y + 1, 5) = Me.ListBox1.List(x - 1, 1)
      .Cells(y + 2, 5) = Me.ListBox1.List(x - 1, 2)
      Next x
      End With
      End Sub

      pour la version de michel_m, je vais chercher pour voir

      Bonne suite
      1. merci beaucoup de votre aide, je vais essayer de trouver la suite par moi même.
        1. la formule de restitution fonctionnement parfaitement. Merci à vous 2!

          je souhaite insérer le nombre de ligne correspondant au Listcount de ma listbox.

          Toutes mes données restituées seront les unes sous les autres
          1. Contributeur
            bonjour

            démo de principe
            remplissage de la listbox multicolonne à partir d'un modèle sur la feuille (H5:J9") et restitution de la list1 dans la feuille

            'Remplissage 
            Private Sub UserForm_Initialize()
            tablo = Sheets(1).Range("H5:J9").Value
            ListBox1.Column() = Application.Transpose(tablo)
            End Sub 
            
            'restitution 
            Private Sub CommandButton1_Click()
                With ListBox1
                    Sheets(1).Range(Cells(1, 1), Cells(.ListCount, 3)) = .List
                End With
            End Sub


            la maquette

            https://www.cjoint.com/?3BBqV6Cz239

            edit: inversé la transposition !!!!


            Michel
          2. Re,

            Exemple:
            Feuil1 pour l'onglet
            E-F-G pour les colonnes

            Private Sub CommandButton1_Click()
            Dim x As Integer, Nb_L_ListBox As Integer
            With Worksheets("feuil1")
            For x = 1 To Me.ListBox1.ListCount
            .Cells(x, 5) = Me.ListBox1.List(x - 1, 0)
            .Cells(x, 6) = Me.ListBox1.List(x - 1, 1)
            .Cells(x, 7) = Me.ListBox1.List(x - 1, 2)
            Next x
            End With
            End Sub

            Vous modifierez pour vous

            Bonne suite
            1. Re,
              Juste un detail:

              j'ai une listbox 3 colonnes remplie de valeurs et lorsque je clique sur le bouton "valider" les valeurs sont écrites dans des cellules distinctes.


              Vous voulez copiez toutes les valeurs de la listbox ou seulement celles qui sont selectionnees????
              1. Dans une userform, j'ai une listbox 3 colonnes remplie de valeurs et lorsque je clique sur le bouton "valider" les valeurs sont écrites dans des cellules distinctes.

                voila mon objectif.