VBA probleme consante requise
X-Men
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
C'est mon travail sur Amercian Option, mais quand je voudrais exécuter la function, la réponse est toujours ¨Constante Requise¨, j'ai l'examen demain, merci pour votre aide !!!
Function CallAm(S0, K, r, rd, sigma, T, n) As Double
Dim epsilon As Double
Dim u As Double, d As Double, a As Double, p As Double, q As Double
epsilon = T / n
u = Exp(sigma * Sqr(epsilon))
d = 1 / u
a = Exp(r * epsilon)
p = (Exp((r - rd) * epsilon) - d) / (u - d)
q = 1 - p
Dim i, j As Integer
Dim tr2(n, n) As Double
Dim tr3(n, n) As Double
Dim ABC As Double
tr2(0, 0) = S0
For j = 1 To n
For i = 0 To (j - 1)
tr2(i, j) = tr2(i, j - 1) * u
Next
tr2(j, j) = tr2(j - 1, j - 1) * d
Next
For i = 0 To n
tr3(i, n) = Application.WorksheetFunction.Max(tr2(i, n) - K, 0)
Next
For j = (n - 1) To 0 Step -1
For i = 0 To j
ABC = Application.WorksheetFunction.Max(tr2(i, j) - K, 0)
tr3(i, j) = (p * tr3(i, j + 1) + q * tr3(i + 1, j + 1)) / a
tr3(i, j) = Application.WorksheetFunction.Max(ABC, tr3(i, j))
Next
Next
CallAm = tr3(0, 0)
End Function
C'est mon travail sur Amercian Option, mais quand je voudrais exécuter la function, la réponse est toujours ¨Constante Requise¨, j'ai l'examen demain, merci pour votre aide !!!
Function CallAm(S0, K, r, rd, sigma, T, n) As Double
Dim epsilon As Double
Dim u As Double, d As Double, a As Double, p As Double, q As Double
epsilon = T / n
u = Exp(sigma * Sqr(epsilon))
d = 1 / u
a = Exp(r * epsilon)
p = (Exp((r - rd) * epsilon) - d) / (u - d)
q = 1 - p
Dim i, j As Integer
Dim tr2(n, n) As Double
Dim tr3(n, n) As Double
Dim ABC As Double
tr2(0, 0) = S0
For j = 1 To n
For i = 0 To (j - 1)
tr2(i, j) = tr2(i, j - 1) * u
Next
tr2(j, j) = tr2(j - 1, j - 1) * d
Next
For i = 0 To n
tr3(i, n) = Application.WorksheetFunction.Max(tr2(i, n) - K, 0)
Next
For j = (n - 1) To 0 Step -1
For i = 0 To j
ABC = Application.WorksheetFunction.Max(tr2(i, j) - K, 0)
tr3(i, j) = (p * tr3(i, j + 1) + q * tr3(i + 1, j + 1)) / a
tr3(i, j) = Application.WorksheetFunction.Max(ABC, tr3(i, j))
Next
Next
CallAm = tr3(0, 0)
End Function
A voir également:
- VBA probleme consante requise
- Action requise sur le compte - Forum Téléphones & tablettes Android
- Excel compter cellule couleur sans vba - Guide
- Ups l'adresse est requise - Forum Vos droits sur internet
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
1 réponse
bonsoir
je crois que le pb vient de la déclaration de t2 et de t3
Dim tr2(n, n) As Double
Dim tr3(n, n) As Double
la dimension d'un tableau doit être une constante, or n est une variable passée à la fonction CallAm
pour contourner le pb, essaies ceci
Dim tr2
Dim tr3
redim t2 (1 to n, 1 to n)
redim t3 (1 to n, 1 to n)
bonne suite
je crois que le pb vient de la déclaration de t2 et de t3
Dim tr2(n, n) As Double
Dim tr3(n, n) As Double
la dimension d'un tableau doit être une constante, or n est une variable passée à la fonction CallAm
pour contourner le pb, essaies ceci
Dim tr2
Dim tr3
redim t2 (1 to n, 1 to n)
redim t3 (1 to n, 1 to n)
bonne suite