Bonjour à tous,
Voilà, j'ai un petit soucis que je vais essayer d'expliquer au mieux ici:
J'ai monté une rapide feuille de calcul pour pricer des options (financières) et des stratégies afférentes.
Jusque là, rien de bien compliqué, juste une formule fermée (celle de Black & Scholes adapté au futures) avec des paramètres à adapter.
Cela se complique lorsque l'on me demande de donner la volatilité de l'option en fonction de son prix:
J'ai donc créer un bouton activX pour ne pas encombrer la feuille qui appelle un userform.
Je pense qu'il faut utiliser le solveur pour trouver le paramètre recherché (comme sur ma calto) or là se pose mon principal problème:
sur tous les forums qui en parle, les paramètres du solveur vont chercher des valeurs dans une feuille de calcul or moi, je voudrais prendre les paramètres de mes textbox$.value .
Je me permet donc de faire appel à vous pour m'aider parceque là, ça fait deux jours que je tourne en rond et je sens que je deviens contre productif.
N'y aurait-il pas une autre solution que de passer par ce solveur?
PS:Comme je ne peux pas attacher directement mon fichier excel voici ce que ça donne à peu près en image avec le code correspondant.
PS2: Je dois donc trouver le résultat M au sein de la formule du code ci dessous:
Je précise que je suis loin d'être une star en VBA donc un peu d'indulgence please.
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
35
36
37
38
39
40
41 Private Sub CommandButton1_Click() 'Control des erreurs de sélécion call put If OptionButton1.Value = no And OptionButton2.Value = no Then MsgBox "Call ou Put??" Else 'integer=> Entier String Single Long Dim S As Single Dim K As Single Dim r As Single Dim T As Single 'Correspond au prix du call Dim c As Single 'M correspond au résultat Dim M As Single S = TextBox1.Value K = TextBox2.Value r = TextBox3.Value T = TextBox4.Value 'TextBox5.Value = Exp(-r * (T / 365)) * (S * LOI.NORMALE.STANDARD((Log(S / K) + ((M * M) * (C10 / 365)) / 2) / (C8 * RACINE(C10 / 365))) - C4 * LOI.NORMALE.STANDARD((Ln(C2 / C4) + ((C8 * C8) * (C10 / 365)) / 2) / (C8 * RACINE(C10 / 365)) - C8 * RACINE(C10 / 365))) M = S + K + r + T 'affichage du résultat arrondi à deux chiffres après la virgule TextBox6.Value = FormatPercent(M, 2) End If End Sub Private Sub UserForm_Activate() TextBox1.Value = Range("C2") TextBox2.Value = Range("C4") TextBox3.Value = Range("C6") TextBox4.Value = Range("C10") End Sub
Bon week end à tous
Partager