probleme <subscript out of range>
Bonjour,
je fais mes premiers pas sur vba.
J'essaie de réaliser un fichier excel avec vba pour un travail de finance.
Quand je le lance, j'ai l'erreur subscript out of range qui apparait. Je ne comprends pas ce que ca veut dire et ce que je dois changer. Quelqu'un pourrait il me sauver ?
merci d'avance !
Deborah
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| Public Function PricingArbreBinomial(NbreDePas As Integer) As Double
ReDim PrixCall(NbreDePas) As Double
Dim hausse As Double
Dim baisse As Double
Dim ProbaRN As Double
Dim St As Double
Dim S0 As Double
Dim r As Double
Dim T As Double
Dim K As Double
Dim Barriere As Double
Dim d As Double
Dim vol As Double
S0 = Sheets("Pricing").Range("D5").Value
r = Sheets("Pricing").Range("D6").Value
T = Sheets("Pricing").Range("D7").Value
K = Sheets("Pricing").Range("D8").Value
Barriere = Sheets("Pricing").Range("D9").Value
d = Sheets("Pricing").Range("D10").Value
vol = Sheets("Pricing").Range("D11").Value
NbreDePas = Sheets("Pricing").Range("E20").Value
hausse = Exp((r - d) * T / NbreDePas + vol * Sqr(T / NbreDePas))
baisse = Exp((r - d) * T / NbreDePas - vol * Sqr(T / NbreDePas))
ProbaRN = (Exp((r - d) * T / NbreDePas) - baisse) / (hausse - baisse)
For i = 0 To NbreDePas
St = S0 * hausse ^ (NbreDePas - i) * baisse ^ i
If (St >= Barriere) Then
If St > K Then
PrixCall(i) = St - K ----> l'erreur est sur cette ligne
Else
PrixCall(i) = 0
End If
Else
PrixCall(i) = 0
End If
Next i
For j = 0 To NbreDePas - 1 'calcul des valeurs intermédiaires du spot (remplissage par ligne)
For i = 1 To NbreDePas - j
St = S0 * hausse ^ (NbreDePas - j - i) * baisse ^ j
If St > Barriere Then
PrixCall(i) = (ProbaRN * PrixCall(i) + (1 - ProbaRN) * PrixCall(i + 1)) / Exp(r * T / NbreDePas)
Else
PrixCall(i) = 0
End If
Next i
Next j
PricingArbreBinomial = PrixCall(0)
End Function |