Sub Détail2()
Dim N% '0 < N < 4902'
N = 4901
[B2].Resize(N + 1).Value = FIBO9(N)
End Sub
Function FIBO9(N%)
Dim i%, j%, Tmp&, Retenue&, Drapeau As Boolean
Dim NbTranches%, Tranche&(), Fibonacci$()
NbTranches = Int(N * 2.32208489166643E-02 - 3.88316669075566E-02)
NbTranches = NbTranches - (NbTranches < 0)
ReDim Fibonacci(N, 0), Tranche(N, NbTranches)
Fibonacci(0, 0) = "'0": Fibonacci(1, 0) = "'1": Tranche(1, NbTranches) = 1
For i = 2 To N
For j = NbTranches To 0 Step -1
Tmp = Tranche(i - 2, j) + Tranche(i - 1, j) + Retenue
If Tmp > 999999999# Then
Tranche(i, j) = Tmp - 1000000000#: Retenue = 1
Else
Tranche(i, j) = Tmp: Retenue = 0
End If
Next
Drapeau = False
For j = 0 To NbTranches
If Drapeau Then
Fibonacci(i, 0) = Fibonacci(i, 0) & Right$("000000000" & Tranche(i, j), 9)
ElseIf Tranche(i, j) Then
Fibonacci(i, 0) = Fibonacci(i, 0) & "'" & Tranche(i, j): Drapeau = True
End If
Next
Next
FIBO9 = Fibonacci
End Function