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. 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.
    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. 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. 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. 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. merci beaucoup de votre aide, je vais essayer de trouver la suite par moi même.
            1. 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. 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. 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