Bonjour
J'ai un petit problème, je fais appel à une fonction dans une fonction, mais arrivé à celle ci, elle ne se lance pas et me sort incompatiblité de type... J'ai bien vérifié si mes expressions étaient bien des nombres, et c'est bien le cas, j'ai pas de string..
ici tout va bien
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 Sub test() Dim base As Single, val As Double, dt_final As Date, couru As Double, duree As Single, cpn As Double dt_final = CDate("28/12/2022") couru = (Now() - CDate("28/12/2016")) / 365 duree = Round((dt_final - CDate("28/12/2017")) / 365, 0) cpn = equiv_taux(0.034, 4) base = 1 val = 119.215 essaie = newton(0.034, cpn, 100, duree, couru, 1, val, 100) End Sub
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 Function testote(x0, cpn, remb, duree, couru, freq, val, price) Dim essai As Double, f As Double, f1 As Double Dim test As String test = "" i = 0 f = 0 f1 = 0 Do f = price(cpn, remb, duree, couru, x0) f1 = deriv1(cpn, remb, duree, couru, rdmt) newton = x0 - f / f1 essai = price(cpn, remb, duree, couru, newton) If val - essai < 0.00001 Then test = "ok" Else xo = newton End If i = i + 1 If i > 1000 Then Exit Do End If Loop While test = "ok" End Function
ça me bloque au niveau de f=price(), incompatibilité de type...je vous mets ma fonction price() :
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 Function price(cpn, remb, duree, couru, rdmt) As Double price = 0 For i = 0 To duree If i = 0 Then price = cpn / ((cpn * couru) * (1 + rdmt) ^ (couru + 1)) Else price = price + cpn / ((1 + rdmt) ^ (i + 1)) End If If i = duree Then price = price + remb / ((1 + rdmt) ^ (duree + 1)) End If Next i End Function
si vous savez pourquoi ? Je pense bien que c'est surement une maladresse mais bon je trouve pas malheureusement...
Partager