Bonsoir,
Plusieurs remarques :
1- la fonction "Match" requiert un tableau de valeurs et non une plage. Ce tableau doit ensuite correspondre à une colonne ou à une ligne
2- comme vous utilisez des objets tableau, il est plus simple et plus clair d'en utiliser les propriétés au niveau du code
3- il serait bon d'indenter votre code correctement afin d'en avoir une meilleure visibilité
ci-dessous exemple de code pour retirer 1 de votre stock :
Dim Couleur
Dim i As Long
Dim Colonne As Integer
Dim S As Variant
With Sheets("Stock").ListObjects(1)
On Error Resume Next
i = Application.Match(code, .ListColumns("ISBN").DataBodyRange.Value, 0)
On Error GoTo 0
If i = 0 Then
MsgBox "Valeur inexistante"
Else
.ListColumns("Quantité ").DataBodyRange.Rows(i) = .ListColumns("Quantité ").DataBodyRange.Rows(i) - 1
End If
End With
NB: La plage "DatabodyRange" correspond aux données de l'objet tableau sans les entêtes de colonne
La propriété "ListColumns" correspond aux colonnes de l'objet tableau.