Voici deux fonctions en VBA qui peuvent peut-être répondre à ta demande (si j'ai bien compris)
Dans la première les tarifs sont inscrits en dur et dans la seconde ils doivent être passés en paramètres.
(au choix selon les circonstances)
Function TarifTonnes(NbTonnes As Long) As Currency
Dim Tarif1 As Currency '<=21 tonnes
Dim Tarif2 As Currency '>21 tonnes
If NbTonnes <= 21 Then
TarifTonnes = NbTonnes * 43.47
Else
Tarif1 = 21 * 43.47
Tarif2 = (NbTonnes - 21) * 28.98
TarifTonnes = Tarif1 + Tarif2
End If
End Function
Function TarifTonnesV2(NbTonnes As Long, Prix1 As Currency, Prix2 As Currency) As Currency
Dim Tarif1 As Currency '<=21 tonnes
Dim Tarif2 As Currency '>21 tonnes
If NbTonnes <= 21 Then
TarifTonnesV2 = NbTonnes * Prix1
Else
Tarif1 = 21 * 43.47
Tarif2 = (NbTonnes - 21) * Prix2
TarifTonnesV2 = Tarif1 + Tarif2
End If
End Function
Exemple d'appel depuis une cellule: =TarifTonnes(A7)