Re,
Bon, si j'ai bien compris ce nouveau code devrait fonctionner. Il renvoie le prix de vente, renseigné dans txtprivent de GESTCOM, dans la ligne correspondante du tableau de l'onglet Base de donnée articles.
Private Sub CommandButton2_Click()
Dim O As Worksheet
Dim TS As ListObject
Dim LI As Integer
Set O = Worksheets("Base de donnée articles")
Set TS = O.ListObjects("Tableau3")
If cbxfour.Value = "" Then
MsgBox "Veuillez sélectionner le nom du fournisseur.", 48, "Erreur"
Exit Sub
End If
If cbxart.Value = "" Then
MsgBox "Veuillez sélectionner un article.", 48, "Erreur"
Exit Sub
End If
If Me.Txtprix.Value = "" Then
MsgBox "Veuillez insérer le prix d'achat de l'article.", 48, "Erreur"
Exit Sub
End If
If Me.txtprivent.Value = "" Then
MsgBox "Veuillez insérer le prix de vente de l'article.", 48, "Erreur"
Exit Sub
End If
If TextBox2.Value = "" Then
MsgBox "Veuillez insérer une quantité.", 48, "Erreur"
Exit Sub
End If
If cbxfour.ListIndex >= 0 Then
Me.cbxfour.Enabled = False
End If
If Me.cbxart = "" And Me.cbxfour = "" And Me.TextBox2 = "" And Me.txtprivent = "" Then
MsgBox "Veuillez remplir tout les champs.", vbCritical, "Erreur"
End If
If Me.cbxart.ListIndex >= 0 And Me.TextBox2 <> "" And Me.cbxfour.ListIndex >= 0 Then
If Me.ListBox1.ListCount >= 20 Then
MsgBox "Trop d'article pour cette commande, Veuillez créer une autre commande.", vbCritical, "Erreur"
Else
'Contrôle les champs
LI = Range(TS.Name).Columns(2).Find(Me.cbxart.Value, , xlValues, xlWhole).Row - TS.HeaderRowRange.Row
'Remplir la zone liste
With Me.ListBox1
.AddItem
.List(memoire, 0) = TS.DataBodyRange.Item(LI, 1)
.List(memoire, 1) = Me.cbxart
.List(memoire, 2) = Me.TextBox2
.List(memoire, 3) = Me.Txtprix
TS.DataBodyRange.Item(LI, 4) = Me.txtprivent
End With
memoire = memoire + 1
Me.cbxart = ""
Me.TextBox2 = ""
End If
End If
End Sub