Affichage du contenu du magasin et des codes d'articles dans ListBox2
Lorsque je choisis le nom du magasin, il affiche tous les éléments en double et les éléments avec leurs différentes autorisations dans la ListBox 2, spécifique à l'inventaire.
Cependant, lorsque je choisis un code de catégorie spécifique, il est censé afficher toutes les différentes autorisations pour cette catégorie et annuler toutes les catégories dans ListBox 2 pour cette boutique, mais cela ne fonctionne pas.
Il suffit d'afficher ce code uniquement afin de réduire la quantité disponible à la date la plus proche, sachant qu'il existe d'autres quantités pour cet article.
Si vous voyez l'image répertoriée, vous la trouverez affichant tous les articles avec leurs différentes expirations dans le magasin dans ListBox 2
Ce qui est requis lors du choix du code article, par exemple 102, est affiché uniquement dans la zone de liste 2. 102 articles avec toutes leurs expirations et la quantité à distribuer avec la validité la plus proche à inclure dans la zone de liste 1
C'est le code qui est censé afficher uniquement ce que le code article requiert. Me.CB_Pièce
If Me.ComboBox1.ListIndex = 0 Or Me.CB_Pièce.ListIndex = 0 _
Or FlgExit = True Then Exit Sub
Call Charge_ListBox
Lorsque je choisis une boutique spécifique, tous les articles disponibles avec leur validité dans cette boutique sont affichés dans la ListBox2, et c'est ce qui a déjà été fait.
Cependant, lorsque je choisis le code d'un article trié particulier, toutes les quantités avec ce code sont affichées dans la List Box 2 avec leurs différentes dates de péremption, et si cela n'est pas fait
Le code est un filtre entre
ComboBox1 & CB_Pièce
Private Sub ComboBox1_Change()
Dim Ind As Long, Lig As Long
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
' Empêche le chargement de la listbox
FlgExit = True
Me.ListBox2 = ""
Me.ListBox2.Clear
' Me.CB_Pièce.Clear
Me.catetr = ""
CB_Pièce.Clear
For Lig = 1 To [T_BD].Rows.Count
If [T_BD].Item(Lig, 5) = Me.ComboBox1.value Then
Me.CB_Pièce.value = [T_BD].Item(Lig, 1)
If Me.CB_Pièce.ListIndex = 0 Then
Me.CB_Pièce.AddItem [T_BD].Item(Lig, 1)
End If
With Me.ListBox2 ' Avec l'objet conteneur
.AddItem [T_BD].Item(Lig, 1)
Ind = .ListCount - 1 ' Quel nouvel indice
.List(Ind, 1) = [T_BD].Item(Lig, 2)
.List(Ind, 2) = [T_BD].Item(Lig, 4)
.List(Ind, 3) = [T_BD].Item(Lig, 5)
.List(Ind, 4) = Format([T_BD].Item(Lig, 9), "DD/MM/YYYY")
'Format(Me.ListBox2.Column(4), "DD/MM/YYYY")
End With
End If
Next
Me.CB_Pièce.ListIndex = -1
' Remet le Flag normalement
FlgExit = False
Quantitetr = "": If catetr = "" Then Exit Sub
Call MajStkProv: ListMagD
'CB_Pièce = ""
End Sub
Private Sub CB_Pièce_Change()
Sheets("Stock").Activate
On Error Resume Next
'ComboBox2.Clear
Me.stocktr.Enabled = False
Quantitetr = ""
catetr = "": stocktr = "" ': TextBox1 = ""
With ComboBox1
' .Clear
If CB_Pièce = "Entrez le code produit" Then
.AddItem "Du magasin": .ListIndex = 0: Exit Sub
End If
Dim i&
For i = 1 To UBound(TblInv)
If TblInv(i, 1) = CB_Pièce.Text Then
' .AddItem TblInv(i, 5)
If catetr = "" Then catetr.Text = TblInv(i, 2)
If stocktr = "" Then stocktr = TblInv(i, 4)
If Me.OptionButton1 = True Then
If TextBox1 = "" Then TextBox1 = ""
ElseIf Me.OptionButton2 = True Then
If TextBox1 = "" Then TextBox1 = Format(TblInv(i, 9), "DD/MM/YYYY")
End If
End If
Next i
'.ListIndex = 0
End With
Me.stocktr.Enabled = False
Quantitetr.SetFocus
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If Me.ComboBox1.ListIndex = 0 Or Me.CB_Pièce.ListIndex = 0 _
Or FlgExit = True Then Exit Sub
Call Charge_ListBox
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub
Sub Charge_ListBox()
Dim i As Long
'Me.ListBox2.Clear
For i = 1 To [T_BD].Rows.Count
If [T_BD].Item(i, 5) = Me.ComboBox1.value Then
If [T_BD].Item(i, 1) = Me.CB_Pièce.value Then
Me.ListBox2.AddItem [T_BD].Item(i, 1)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = [T_BD].Item(i, 1)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 2) = [T_BD].Item(i, 2)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 3) = [T_BD].Item(i, 4)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 4) = [T_BD].Item(i, 5)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 5) = [T_BD].Item(i, 9)
ListBox2.ColumnWidths = "60,60,50,70,70,0"
End If
End If
Next
End Sub
![compress 4876 jpg c76965e453b5041e90b2be1bb919017c](https://forum.excel-pratique.com/file/img/1/122017_66523d2547d1f029089700.jpg)
Le problème persiste toujours
Bonjour,
aidez-moi s'il vous plaît et révisez le code
Est-ce qu'il y a quelqu'un qui peut m'aider?
Y a-t-il un problème avec le code, qui consiste à filtrer entre 2 combobox et à afficher les résultats dans la Listbox 2 ?
Bonsoir
Y a-t-il un problème dans la compréhension du contenu du code qui doit être implémenté dans ce fichier ?
Bonjour mando200,
Le souci provient du format des données au moment de leurs comparaisons.
En appliquant un format "nombre entier" aux deux données comparées, la condition peut se vérifier correctement.
Une seule ligne à modifier :
If [T_BD].Item(i, 1) = Me.CB_Pièce.value Then
modifiée ainsi
If CInt([T_BD].Item(i, 1).value) = CInt(Me.CB_Pièce.value) Then
Sub Charge_ListBox()
Dim i As Long
Me.ListBox2.Clear
For i = 1 To [T_BD].Rows.Count
If [T_BD].Item(i, 5) = Me.ComboBox1.value Then
If CInt([T_BD].Item(i, 1).value) = CInt(Me.CB_Pièce.value) Then ' << Bizz
Me.ListBox2.AddItem [T_BD].Item(i, 1)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = [T_BD].Item(i, 1)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 2) = [T_BD].Item(i, 2)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 3) = [T_BD].Item(i, 4)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 4) = [T_BD].Item(i, 5)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 5) = [T_BD].Item(i, 9)
ListBox2.ColumnWidths = "60,60,50,70,70,0"
End If
End If
Next
End Sub
Bizz
Merci Bizarre
il travaille