Inc Type case Vect double et ref fonction double

Bonjour, comment régler le caprice de la fonction d1d2 qui doit assigner deux double à deux cases d'un vecteur,

j'obtiens l'erreur Incompatibilité de types lorsque j'appelle la première case du vecteur fonction d1d2 avec l'instruction d1d2(St, t, K, r, M, sigma)(1, 1) .

Merci pour votre aide.

Function d1d2(St As Double, t As Double, K As Double, r As Double, M As Double, sigma As Double) As Double
ReDim d1d2(1, 2)
d1d2(1, 1) = (WorksheetFunction.Ln(St / K) + (r + 0.5 * WorksheetFunction.Power(sigma, 2)) * (M - t)) / (sigma * WorksheetFunction.Power((M - t), 0.5))
d1d2(1, 2) = d1d2(1, 1) - sigma * WorksheetFunction.Power((M - t), 0.5)
End Function

Function BSCALLPRICE(St As Double, t As Double, K As Double, r As Double, M As Double, sigma As Double) As Double
Ct = St * WorksheetFunction.NormDist(d1d2(St, t, K, r, M, sigma)(1, 1), 0, 1, True) - K * Exp(-r * (M - t)) * WorksheetFunction.NormDist(d1d2(St, t, K, r, M, sigma)(1, 2), 0, 1, True)
End Function

Sub CALLPRICE()
Dim St As Double
Dim t As Double
Dim Ct As Double
Dim K As Double
Dim K2 As Double
Dim r As Double
Dim M As Double
Dim sigma As Double
St=100
t=0
K=100
r=0,02
M=1
sigma=0,15
Ct = BSCALLPRICE(St, t, K, r, M, sigma)

End Sub

Lorsque je modifie l'appel de la fonction la ligne suivante

Dim d1d2Vector(1, 2) As Double
d1d2Vector = d1d2(St, t, K, r, M, sigma)

donne l'erreur de compilation: "Impossible d'affecter un tableau"

Function d1d2(St As Double, t As Double, K As Double, r As Double, M As Double, sigma As Double) As Double
ReDim d1d2(1, 2)
d1d2(1, 1) = (WorksheetFunction.Ln(St / K) + (r + 0.5 * WorksheetFunction.Power(sigma, 2)) * (M - t)) / (sigma * WorksheetFunction.Power((M - t), 0.5))
d1d2(1, 2) = d1d2(1, 1) - sigma * WorksheetFunction.Power((M - t), 0.5)
End Function

Function BSCALLPRICE(St As Double, t As Double, K As Double, r As Double, M As Double, sigma As Double) As Double
Dim d1d2Vector(1, 2) As Double
d1d2Vector = d1d2(St, t, K, r, M, sigma)
Ct = St * WorksheetFunction.NormDist(d1d2Vector(1, 1), 0, 1, True) - K * Exp(-r * (M - t)) * WorksheetFunction.NormDist(d1d2(St, t, K, r, M, sigma)(1, 2), 0, 1, True)
End Function

Sub CALLPRICE()
Dim St As Double
Dim t As Double
Dim Ct As Double
Dim Pt As Double
Dim K As Double
Dim K2 As Double
Dim r As Double
Dim M As Double
Dim sigma As Double
St = 100
t = 0
K = 100
r = 0.02
M = 1
sigma = 0.15
Ct = BSCALLPRICE(St, t, K, r, M, sigma)
End Sub

 

Ci joint le fichier xlsm

Je m'en suis sorti en définissant le vecteur comme variable globale. Merci.

bonjour,

une proposition de correction

Function d1d2(St As Double, t As Double, K As Double, r As Double, M As Double, sigma As Double) As Variant
    Dim vector(1, 2)
    vector(1, 1) = (WorksheetFunction.Ln(St / K) + (r + 0.5 * WorksheetFunction.Power(sigma, 2)) * (M - t)) / (sigma * WorksheetFunction.Power((M - t), 0.5))
    vector(1, 2) = vector(1, 1) - sigma * WorksheetFunction.Power((M - t), 0.5)
    d1d2 = vector
End Function

Function BSCALLPRICE(St As Double, t As Double, K As Double, r As Double, M As Double, sigma As Double) As Double
    Ct = St * WorksheetFunction.NormDist(d1d2(St, t, K, r, M, sigma)(1, 1), 0, 1, True) - K * Exp(-r * (M - t)) * WorksheetFunction.NormDist(d1d2(St, t, K, r, M, sigma)(1, 2), 0, 1, True)
End Function

Sub CALLPRICE()
    Dim St As Double
    Dim t As Double
    Dim Ct As Double
    Dim K As Double
    Dim K2 As Double
    Dim r As Double
    Dim M As Double
    Dim sigma As Double
    St = 100
    t = 0
    K = 100
    r = 0.02
    M = 1
    sigma = 15
    Ct = BSCALLPRICE(St, t, K, r, M, sigma)
End Sub
Rechercher des sujets similaires à "inc type case vect double ref fonction"