AIDE : Ma Listbox n'affiche qu'une ligne...

Résolu
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 :
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

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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...
1
Zizoux54
 
Nickel, ca fonctionne ! C'était si bête ! Merci beaucoup pijaku !
0
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...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Mais de rien cher Zizoux54.
A+
0
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
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
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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...
0
Zizoux54
 
en effet, il y a soucis !! la correction ne va pas !! Maintenant j'ai bien une liste mais la condition ne sert plus a rien alors que j'en ai besoin pour filtrer ma listbox ...
0
Zizoux54
 
je teste et je vous dit ca !
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
As tu essayé ma solution ci dessus :
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
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
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
0
Zizoux54
 
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 !
0