Modifier code pour doublons

Bonjour tout le monde,

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.

Merci d’avance pour votre aide.

Rubis57

Bonjour Rubis,
Sans un fichier, ce serait pas facile de traiter votre demande.
Cordialement

1 « J'aime »

Bonjour,

oui je comprends, mais ce sera compliqué.

Merci quand même.

Rubis

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

1 « J'aime »

Bonjour Cow18,

Merci pour le retour. Je sais que sans fichier cela est très compliqué et on ne peut pas tout deviner.

Je vais essayer de faire un fichier ou tableau modèle pour mieux comprendre.
Je reviendrai vers vous très vite.

Rubis57

Re,

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.

*Rubis

1 « J'aime »

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.