Function Rendement#(vinv, datinv, vechu#, datechu As Date)
'vinv et datinv doivent être des vecteurs colonnes
Dim ub&, tablo(), j&, sens%, n&, iteration%, deb&, i&, t#, s#
ub = Application.CountA(vinv)
ReDim tablo(1 To ub, 1 To 2)
For j = 1 To ub
tablo(j, 1) = vinv(j, 1)
tablo(j, 2) = Application.Days360(datinv(j, 1), datechu) / 360
Next
sens = IIf(Application.Sum(vinv) < vechu, 1, -1)
n = 100 '1er calcul précision de 1%
For iteration = 1 To 6 'dernier calcul précision de 0,00001%
deb = 10 * i '0 pour le 1er calcul
For i = deb To n * sens Step sens 'taux de deb à 100% (ou -100%)
t = i / n
s = 0
For j = 1 To ub
s = s + tablo(j, 1) * (1 + t) ^ tablo(j, 2)
Next
If s * sens > vechu * sens Then n = 10 * n: sens = -sens: Exit For
Next i, iteration
Rendement = t 'restitution
End Function