Bon c'est pas grave merci quand meem Hervé,
j'ai trouvé une autre personne qui a pu m'aider, si ca vous interresse la réponse qu'il m'a donné est la suivante :
Merci encore et @+ :
Dim valeur As Double
Function maxsi(plage As Range, critère As String, max_plage As Range)
x = max_plage.Column - plage.Column
valeur = 0
For Each c In plage
If c.Value = critère Then
If c.Offset(0, x).Value > valeur Then valeur = c.Offset(0, x).Value
End If
Next
maxsi = valeur
End Function