Tu n'étais pas très loin,
modifie comme ceci
Function derligne(valeur, article)
Application.Volatile
'initialisation
carte = ThisWorkbook.Names("Carte").RefersToRange.Value 'numéro de carte trouvé dans les celule nommées
Set tableau = Sheets("base").ListObjects("T_base") 'Définit le tableau
colquant = tableau.ListColumns("Quantité prise").DataBodyRange.Column ' numéro de la colopnne ou trouver la date
colcarte = tableau.ListColumns("N° de carte").DataBodyRange.Column ' numéro de la colopnne ou trouver le numéro de carte
For Each i In tableau.ListColumns(article).DataBodyRange 'pour chaque lignes de la colonne du tableau
'MsgBox i.Parent.Cells(i.Row, colcarte) & "/" & i & "/" & i.Parent.Cells(i.Row, colquant)
'trim supprimme les espaces avant et après
'ucase convertit tout en majuscule
'si i = la valeur et que le numéro de carte correspond
If Trim(UCase(i)) = valeur And i.Parent.Cells(i.Row, colcarte) = carte And i.Parent.Cells(i.Row, colquant) = 2 Then
derligne = 2
End If
Next
If derligne = 0 Then derligne = ""
End Function