Une boucle sur des réels?

  • Initiateur de la discussion Reeaz
  • Date de début
R

Reeaz

Guest
Bonjour,
je souhaite créer una macro qui :
-fait varier une variable "sig" qui est réelle
-qui pour chaque sig retourne une valeur "swapvar"
-puis teste la valeur swapvar par rapport à une autre valeur figée "Contre"

S'il trouve à un moment ds la boucle swapvar=Contre alors il s'arrete et renvoie ds une cellule la valeur de sig pr laquelle il y a égalité.

Cependant, j'ai 2 pbs:

-je voudrai lui faire comprendre que tt qu'il ne trouve pas l'égalité qu'il rest ds la boucle et s'il trouve l'égalité qu'il en sorte
-que ma variable étant réelle, qu'elle ne se fasse que sur 2 décimales (1.01 puis 1.02...99.99 pour arriver à 100).

Déja j'ai l'impression que ma boucle n'est pas bonne.
Si qqun pouvait vérifier ma macro et notamment cette boucle (simple) mais que j'ai du mal à faire...

Voici mon code:

Sub Dicho()

K = 0.042
F = 0.03869454
t = 26
Contre = 7780861799.33718
tenor = 1
b = -1
Amount = 27000000
Df = 0.98754242542

Dim SwapVar As Double
Dim sig As Double

For sig = 1 To 100 Step 0.01
'Debug.Print sig
d1 = (Log(F / K) + (sig / 100) ^ 2 / 2 * t) / ((sig / 100) * Sqr(t))
d2 = d1 - (sig / 100) * Sqr(t)

'SwapVar = SwapVar + (Amount / tenor) * Df * b * (F0 * Norm(b * d1) - Rx * Norm(b * d2))
SwapVar = SwapVar + (Amount / tenor) * Df * b * (F * Norm(b * d1) - K * Norm(b * d2))
Debug.Print SwapVar
'While SwapVar <> Contre
'sig = sig + 1
'If SwapVar = Contre Then
'Range("A1").Value = sig
'End If
'Wend

If SwapVar <> Contre Then
'sig = sig + 0.1
Else: Range("A1").Value = sig
End If
'Debug.Print sigma
Next sig

End Sub


Public Function Norm(x As Double) As Double ' Cumulative normal distribution
'Matthew Wilson. E-Mail: Mattw0199@yahoo.com. This function is not copyrighted. Please use as you wish.

Norm = Application.WorksheetFunction.NormSDist(x)

End Function


Merci.
Reeaz
 

Discussions similaires

Statistiques des forums

Discussions
312 963
Messages
2 093 998
Membres
105 906
dernier inscrit
aifa