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 :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...
-
Mais de rien cher Zizoux54.
A+ -
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-
Oui! très juste.
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 :
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 -
Merci à vous 2 !! Le code que vous m'avez fourni fonctionne parfaitement !! Qu'est-ce que j'aimerais avoir votre rapidité !!
pijaku : Je connais ton lien que j'ai dévoré ! Il m'a beaucoup aidé ! Mais j'avoue que là je n'arrivais pas à appliquer !
Merci encore et à bientôt si j'ai besoin !