AIDE : Ma Listbox n'affiche qu'une ligne...
Résolu
Zizoux54
-
Zizoux54 -
Zizoux54 -
Bonjour,
Je suis également débutant sur VBA et je bloque sur un code.
Je suis en train de réaliser un outil de gestion de stock.
A l'aide d'un Userform équipé d'une Listbox, j'aimerais afficher tous les articles donc le stock minimum est atteint ou dépassé.
Jusque là tout va bien, mais à l'initialisation de l'Userform, il ne m'affiche qu'une ligne (la dernière répondant à la condition). Quand j'y vais pas à pas, je me rends compte qu'à chaque fois qu'un produit respecte la condition, le code efface l'ancien et le remplace par celui-ci et ainsi de suite jusqu'à la dernière.
Moi je veux qu'il soit tous affiché sous forme de liste...
Je vous met mon code et mon fichier :
le fichier :
http://cjoint.com/?3CipAAXqhOo
Merci à tous de me sortir de cette galère car je comprends vraiment pas mon erreur...
Cordialement
Anthony
Je suis également débutant sur VBA et je bloque sur un code.
Je suis en train de réaliser un outil de gestion de stock.
A l'aide d'un Userform équipé d'une Listbox, j'aimerais afficher tous les articles donc le stock minimum est atteint ou dépassé.
Jusque là tout va bien, mais à l'initialisation de l'Userform, il ne m'affiche qu'une ligne (la dernière répondant à la condition). Quand j'y vais pas à pas, je me rends compte qu'à chaque fois qu'un produit respecte la condition, le code efface l'ancien et le remplace par celui-ci et ainsi de suite jusqu'à la dernière.
Moi je veux qu'il soit tous affiché sous forme de liste...
Je vous met mon code et mon fichier :
Public Sub userform_activate() Sheets("IES VP").Activate Dim i As Integer, j As Byte, l As Integer, b As Integer Dim Listprod As String ListBox1.ColumnCount = 9 ListBox1.ColumnWidths = "220;60;0;0;0;0;60;60;60" l = Range("B65536").End(xlUp).Row For b = 5 To l If Sheets("IES VP").Cells(b, 8).Value <= Sheets("IES VP").Cells(b, 10).Value Then ListBox1.List() = Sheets("IES VP").Range(Cells(b, 2), Cells(b, 10)).Value Next ListBox1.ListIndex = 0 ListBox1.Selected(0) = True End Sub
le fichier :
http://cjoint.com/?3CipAAXqhOo
Merci à tous de me sortir de cette galère car je comprends vraiment pas mon erreur...
Cordialement
Anthony
6 réponses
Bonjour,
Peut être parce qu'à chaque "tour" de ta boucle, tu remplaces la ligne précédente par la ligne actuelle.
Remplace :
par :
teste et reviens...
Peut être parce qu'à chaque "tour" de ta boucle, tu remplaces la ligne précédente par la ligne actuelle.
Remplace :
If Sheets("IES VP").Cells(b, 8).Value <= Sheets("IES VP").Cells(b, 10).Value Then ListBox1.List() = Sheets("IES VP").Range(Cells(b, 2), Cells(b, 10)).Value
par :
If Sheets("IES VP").Cells(b, 8).Value <= Sheets("IES VP").Cells(b, 10).Value Then ListBox1.List() = Sheets("IES VP").Range(Cells(5, 2), Cells(b, 10)).Value
teste et reviens...
Zizoux54
Nickel, ca fonctionne ! C'était si bête ! Merci beaucoup pijaku !
Zizoux54
En fait, je pense qu'il y a un autre soucis car il m'affiche toute la liste des produits sans retirer les lignes ne répondant pas à la condition...
bonjour,
J'émets des doutes....
Si les valeurs "inférieures" sont dans des lignes "dispersées", on affiche quand même les lignes intercalées, même si les valeurs sont supérieures...
Bonne journée
J'émets des doutes....
Si les valeurs "inférieures" sont dans des lignes "dispersées", on affiche quand même les lignes intercalées, même si les valeurs sont supérieures...
Bonne journée
Oui! très juste.
Alors il vaux mieux utiliser AddItem. Comme ceci par exemple :
ou dans le même genre...
Alors il vaux mieux utiliser AddItem. Comme ceci par exemple :
With Sheets("IES VP") For b = 5 To l If Sheets("IES VP").Cells(b, 8).Value <= Sheets("IES VP").Cells(b, 10).Value Then ListBox1.AddItem .Cells(b, 2) For j = 3 To 10 ListBox1.List(ListBox1.ListCount - 1, j - 2) = .Cells(b, j) Next j End If Next b End With
ou dans le même genre...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re-,
Un autre essai :
Bon courage
Un autre essai :
Public Sub userform_activate() Dim Tblo() Dim I As Integer, Lig As Integer, B As Integer Dim J As Byte ListBox1.ColumnCount = 9 ListBox1.ColumnWidths = "220;60;0;0;0;0;60;60;60" With Sheets("IES VP") Lig = .Cells(Rows.Count, 2).End(xlUp).Row ReDim Tblo(1 To Lig, 1 To 9) For B = 5 To Lig If .Cells(B, 8).Value <= .Cells(B, 10).Value Then I = I + 1 For J = 1 To 9 Tblo(I, J) = .Cells(B, J + 1) Next J End If Next B End With Me.ListBox1.List = Tblo ListBox1.ListIndex = 0 ListBox1.Selected(0) = True End Sub
Bon courage