Bonjour,

Voilà mon problème. Je vous explique le contexte, pour que vous compreniez à peu près ce que fait mon code, mais mon problème est purement "informatique" (ce ne sont pas les calculs qui posent problème).

J'ai défini un type "obligation" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    Public Structure Obligation
        Dim Maturity As Double
        Dim Coupon As Double
        Dim Price As Double
    End Structure
puis une fonction "prixObligation(obligation, taux)" permettant de calculer le prix de l'obligation en fonction d'un taux de rendement.

Vient maintenant mon problème. J'ai créé cette fonction récursive :

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
Function tauxActuarielMethodeFaussePosition(ByVal obli As Obligation, ByVal tauxA As Double, ByVal tauxB As Double) As Double
        Dim epsilon As Double = 10 ^ (-4)
        Dim valeurA As Double = prixObligation(obli, tauxA) - obli.Price
        Dim valeurB As Double = prixObligation(obli, tauxB) - obli.Price
        Dim tauxC As Double = tauxA - valeurA * (tauxB - tauxA) / (valeurB - valeurA)
 
 
        If (Math.Abs(tauxB - tauxA) > epsilon) Then
            Dim valeurC As Double = prixObligation(obli, tauxC) - obli.Price
            If ((valeurA * valeurC) < 0) Then
                tauxActuarielMethodeFaussePosition(obli, tauxA, tauxC)
            Else
                tauxActuarielMethodeFaussePosition(obli, tauxC, tauxB)
            End If
 
        Else
            DataRead.Text = tauxC.ToString()
            Return tauxC
        End If
    End Function
J'appelle cette fonction dans une autre procédure ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Dim aux As Double = tauxActuarielMethodeFaussePosition(obli, 0, 100)
DataRead2.Text = aux.ToString()
Le résultat obtenu sur mon label "DataRead" est "1.89" (ce qui exactement ce que j'attends). Mais le label "DataRead2" m'affiche "0" !!

Pourquoi donc ?

J'ai passé plusieurs heures à tout décortiquer pour savoir d'où ça vient, et je ne trouve toujours pas ! Pouvez-vous m'aider ?