Créer ListBox depuis la ligne d'une feuille

Bonjour bonjour le forum !

Voilà ma question sans plus attendre !

Je voudrais que la liste de mon ListBox (qui est sur un UserForm) soit alimentée depuis une ligne et non une colonne !

Pouvez vous m'aider à transformer ce petit bout de code pour qu'il réponde à mes attentes ?

Merci d'avance, Gautier

Dim f, choix(), Rng

   Set f = Sheets("Feuil1")
   Set Rng = f.Range("a2:a" & f.[A65000].End(xlUp).Row)
   choix = Application.Transpose(Rng)
   Me.ListBox1.List = choix

Voici un petit code qui m'a servi par le passé

Private Sub init_liste_activite()

    Dim cell As Range
    Dim Unique1 As New Collection
    Dim Valeur1 As Range
    Dim I As Integer
    Dim d As Integer

                                                                                    'Récupère la derniere ligne non vide dans la colonne A

    I = Cells(1, Columns.Count).End(xlToLeft).Column

                                                                                    'boucle sur les cellules de la colonne A

    For Each cell In Worksheets("Activités").Range("B1:xx1")
                                                                                    'Stocke les données dans une collection
                                                                                    '(La collection n'accepte que des données uniques et permet donc
                                                                                    ' de filtrer facilement les doublons).
        On Error Resume Next

        Unique1.Add cell, CStr(cell)                                                'Converti cell en string

        On Error GoTo 0
    Next cell

                                                                                    'Boucle sur le contenu de la collection pour alimenter la ListBox

    For Each Valeur1 In Unique1

        If Valeur1.Value <> "" Then Me.cbactivite.AddItem Valeur1

    Next Valeur1

End Sub

Merci du retour, je le trouve un peu compliqué comme code ? il ny a pas plus simple, car je ne comprend pas vraiment comment il fonctionne ?

Joins un fichier et je peux l'adapter si tu le souhaite

Sinon voici le fonctionnement dans l'initialisation du userform tu appelle cette procédure, ensuite elle regarde toutes les cellules de la ligne (ici entre b1 et xx1) ensuite elle stock les cellules dans une collection et elle ne prend que les valeurs unique. et ensuite on stock ces valeurs unique dans ton combobox (ici Me.cbactivite)

Je te me le fichier ici et je vais en profiter pour rentrer plus en détail dans mon projet

Ce que je souhaite c'est que quand on choisis "modifier", on fait un choix dans le ComboBox, on fait un petite RechercheH et la liste des ingrédients apparait dans le listbox en dessous Et pour finir en beauté si on appui sur modifier on modifie la ligne en question !

Le pire c'est que je sais faire tout ça mais uniquement dans le cas où on travail sur des colonnes et non des lignes

67pizza.xlsm (35.37 Ko)

Je vois un peu mieux, je pense que tu devrais creuser vers quelque chose du style

Me.TextBox1 = ActiveCell.Offset(0, i)

avec i allant de 1 à nombre de valeur sur la ligne

Mon problème ne vient pas du TextBox mais de comment alimenter la ListBox2 avec des données qui sont sur une ligne et non dans une colonne ! Sachant que cette liste dépand du choix fait dans le ComboBox1

Bonjour

au plus simple

Private Sub List1_init()
   ListBox1.List = Feuil1.Range("A2:A" & Feuil1.[A65000].End(xlUp).Row).Value
End Sub

Private Sub combobox_init()
   Me.ComboBox1.List = Feuil2.Range("A2:A" & Feuil2.[A65000].End(xlUp).Row).Value
End Sub

A+

Maurice

Remplace mon textbox par listbox2

Merci Maurice ! Ça va déjà alléger mon code

Je vois un peu mieux, je pense que tu devrais creuser vers quelque chose du style

Me.TextBox1 = ActiveCell.Offset(0, i)

avec i allant de 1 à nombre de valeur sur la ligne

Le "activcell" me dérange, mais est ce que c'est possible de combiner ton code et celui là ? (Remplacer 1 de la colonne 1 par une mécanique avec i ?)

Dim trouve As String
trouve = ComboBox1.Value

With Sheets("Pizzas")
Me.ListBox2.List = Application.VLookup(trouve, .Range("A:AA"), 1, False)
End With

J'ai bidouillé ça, mais je ne récupère dans la ListBox2 que la valeur contenue dans la première colonne

Private Sub List2_init()

  Set f = Sheets("Catégorie Produits")
  For i = 1 To f.Range("IV1").End(xlToLeft).Column
    Me.ListBox1.AddItem f.Cells(1, i)
  Next i

End Sub

Est-ce possible d'adapter le code ci-dessus pour que ça ressemble à quelque chose comme ça ?

Me.ComboBox1.List = Feuil2.Range("A2:A" & Feuil2.[A65000].End(xlUp).Row).Value

Svp ! Je change un peu de bord mais je reste dans le sujet ! Comment faire pour que mon combobox soit allimenté via les données d'une ligne ? J'ai essayé de bricoler ça... mais ça marche pas

Me.ComboBox1.List = Feuil2.Range("IV1").End(xlToLeft)(1, 1)

Ok c'est bon j'ai trouvé, si jamais quelqu'un passe par là et en a besoins, je me le code ci-dessous

Dim i As Byte
i = 0
    While Feuil2.Range("B1").Offset(0, i).Value <> "" ' si tu veux remplir jusqu'à arriver dans une cellule vide
    ComboBox1.AddItem Feuil2.Range("B1").Offset(0, i).Value
    i = i + 1
Wend

Bonne fête de fin d'années à tous

Bonsoir

a voir

    For C = 2 To Feuil2.Cells(1, Columns.Count).End(xlToLeft).Column
        ComboBox2.AddItem Feuil2.Cells(1, C)
    Next

A+

Maurice

Cela est plus simple et ça marche aussi, merci de la réponse

Cependant je rencontre un autre problème sur mon projet, je voudrais alimenter mon Listbox2 en fonction d'un critère de recherche (ce critère est le choix fait dans le ComboBox). J'arrive à récupérer le N° de colonne dans laquelle se trouve mon critère de recherche mais comment alimenter mon Listebox2 via ce numéro de colonne ? Je remet mon fichier en PJ pour une meilleur compréhension

Voilà ce que j'essaye de faire mais ça ne marche pas

Set num = Range("A1:IV1").Find(ComboBox1.Value, , xlValues, xlWhole, , , False)
MsgBox num.Column  
ListBox2.List = Feuil2.Cells(1, num.Column & Feuil2.[A65000].End(xlUp).Row).Value
40pizza.xlsm (78.87 Ko)

Ok maintenant je suis passé à ça, mais je ne retourne qu'une seul valeur (ce qui est normal) :

Dim num As Range
ListBox2.AddItem Application.Transpose(Feuil2.Cells(2, num.Column))

Mais quand j'essaye de compléter le code ça ne marche plus ! Help !

ListBox2.AddItem Application.Transpose(Feuil2.Cells(2, num.Column & Feuil2.[A65000].End(xlUp).Row))

J'ai même essayé ça, mais la valeur renvoyé est ZERO !

ListBox2.AddItem Application.Transpose(Feuil2.Cells(2 & Feuil2.[A65000].End(xlUp).Row, num.Column))
Rechercher des sujets similaires à "creer listbox ligne feuille"