Private Sub ListBox10_Click()
Dim ligne As Long, Nbre As Integer, i As Byte
Set Result = [Tab_1[ID]].Find(ListBox10, LookIn:=xlValues, LookAt:=xlWhole)
position = Application.Match(ListBox10, [Tab_1[ID]], 0)
If Not IsError(Application.Match(TextBox1, [Tab_C[Désignation]], 0)) Then
position = Application.Match(TextBox1, [Tab_C[Désignation]], 0)
Me.Label134.Caption = [Tab_C].Item(position, 5)
Me.Label144.Caption = [Tab_C].Item(position, 4)
le début de code ci-dessus sert pour faire des commandes :
Lorsque je clique sur une ligne de la Listbox10 pour choisir un produit, il m’affiche dans les labels " 134 et 144 " la quantité et l’unité du produit qui à déjà été choisit pour commander.
Donc pour être plus clair, si par exemple je sélectionne le produit " Bonbons Miel " dans la Listbox10 et que celui-ci avait déjà été choisit pour commander, alors il m’affiche cela dans les Labels « 134 et 144 ».
Il arrive que dans le stock il y a des produits similaires dans la colonne " Désignation " du tableau " Tab_1 ".
Comme je vous ai indiqué que si je choisi par exemple le produit " Bonbons Miel " il peut y avoir plusieurs produits ayant la même Désignation mais avec un autre Conditionnement.
Si je choisi alors le produit " Bonbons Miel " avec un conditionnement de " Boite de 10 " et que plus tard je choisi un produit " Bonbons Miel " avec un conditionnement de " Boite de 50 " il me donnera également l’info dans les labels comme quoi le produit avait déjà été choisi pour commander. Or il devrait faire cela uniquement si je clique sur le produit " Bonbons Miel " conditionnement " Boite de 10 ".
J’espère avoir bien expliqué car il est très difficile de faire un fichier similaire.
re, vous parlez de 2 tableaux, d’un textbox et un listbox, donc c’est difficile de prédire les choses, mais comme début, quelque chose comme ceci
Dim LO, Position, aPosition, iHeader
Set LO = Sheets("nom de la feuille qui contient ce tableau").Range("tabl_1").ListObject
aPosition = Evaluate("IF(tabl_1[ID]=" & Chr(34) & listbox10.Value & Chr(34) & ",ROW(tabl_1[ID]),""-"")") 'matrice avec des "-" et les numéros de ligne qui contiennent votre listbox10
iHeader = LO.HeaderRowRange.Row
For i = 1 To LO.ListRows.Count
On Error Resume Next
Position = "": Position = WorksheetFunction.Small(aPosition, i) - iHeader
On Error GoTo 0
If Not IsNumeric(Position) Then
MsgBox "on a traité toutes les possibilité, désolé", vbInformation: Exit For
Else
MsgBox i & "eme choix, listrow " & Position & vbLf & "col1 " & LO.DataBodyRange.Cells(Position, 1).Value & vbLf & "col2 " & LO.DataBodyRange.Cells(Position, 2).Value
End If
Next
au fait, j’ai fais autrement. J’ai pris l’ID comme référence au lieu de Désignation et cela fonctionne.
Private Sub ListBox10_Click()
Dim ligne As Long, Nbre As Integer, i As Byte
Set Result = [Tab_1[ID]].Find(ListBox10, LookIn:=xlValues, LookAt:=xlWhole)
position = Application.Match(ListBox10, [Tab_1[ID]], 0)
If Not IsError(Application.Match(lblID.caption, [Tab_C[ID]], 0)) Then
position = Application.Match(lblID.caption, [Tab_C[ID]], 0)
Me.Label134.Caption = [Tab_C].Item(position, 5)
Me.Label144.Caption = [Tab_C].Item(position, 4)
Donc je ne change rien d’autre.
Merci à toi Cow18 pour ta réponse et on se dit à une prochaine.