VBA probleme consante requise
X-Men
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
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
- Incompatibilité de type vba ✓ - Forum Programmation
- Excel compter cellule couleur sans vba - Guide
- Ups l'adresse est requise ✓ - Forum Vos droits sur internet
- Dépassement de capacité vba ✓ - Forum Excel
- Vba sleep ✓ - 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