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. 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. 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
                  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