J'ai supposé que le calcul de chaque génération s'appuyait sur la précédente.
Contrôler si ok.
Clic-droit sur le nom d'onglet et 'Visualiser le code....' pour y accéder.
Sub besoinReel()
Dim datas, result
Dim parent(1 To 10, 1 To 3) As Double
Dim lig As Long, gen As Long, i As Long
datas = [A2].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1, 5).Value
ReDim result(1 To UBound(datas, 1))
For lig = 1 To UBound(result)
gen = datas(lig, 1)
' stocker param génération x
For i = 1 To 3
parent(gen, i) = datas(lig, i + 2)
Next i
' calcul
If gen = 1 Then
'=C2-D2
result(lig) = datas(lig, 3) - datas(lig, 4)
Else
'=(E2*C5/C2)-D5
result(lig) = (parent(gen - 1, 3) * datas(lig, 3) / parent(gen - 1, 1)) - datas(lig, 4)
End If
Next lig
[F2].Resize(UBound(result)) = Application.Transpose(result)
End Sub
Dim parent(1 To 10, 1 To 3) As Double
Prévu pour 10 générations. Augmenter si besoin.
Garder l'extention .xlsm pour conserver la macro. Il faut les accepter à l'ouverture du fichier, et cliquer sur le bouton pour recalculer
Tu n'as pas dit s'il fallait conserver tous les résultats (nombres négatifs)
eric