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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager