Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2593 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Convertir une fraction obtenue en Inputbox en une variable numérique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Convertir une fraction obtenue en Inputbox en une variable numérique

n°1673242
minot435
Posté le 18-01-2008 à 11:59:24  profilanswer
 

Bonjour,
 
Grace à une inputbox, j'obtiens une fraction au format string
Mais lorsque je veux faire des calculs sur cette variable, ceci est impossible
J'ai essayé en la déclarant en variant mais cela ne marche pas.
 
 
Comment puis-je faire? merci
 

mood
Publicité
Posté le 18-01-2008 à 11:59:24  profilanswer
 

n°1673255
olivthill
Posté le 18-01-2008 à 12:10:23  profilanswer
 

C'est difficile à dire sans voir une seule ligne de code.
Cependant, c'est peut-être une conversion à faire avec CDbl.

n°1673257
minot435
Posté le 18-01-2008 à 12:17:56  profilanswer
 

Option Explicit
Public S, K, vol, r, T, rép, N, Nin As String, q As Byte
Dim d1 As String, d2 As Double
 
Private Sub CommandButton1_Click()
 
'Déclaration des variables
 
rép = ComboBox1.Value
 
'Formule pour un call classique
UserForm1.Hide 'cache l'userform
S = InputBox("Quel est le cours spot?" )
If S = "" Then Exit Sub ' si on clique sur le bouton annuler,la macro s'arrette
K = InputBox("Quel est le strike de l'option?" )
If K = "" Then Exit Sub
T = InputBox("Quelle est la durée de vie de l'option (en années)?" )
If T = "" Then Exit Sub
vol = InputBox("Quelle est la volatilité de l'option?" )
If vol = "" Then Exit Sub
r = InputBox("Quel est la valeur du taux sans risque?" )
If r = "" Then Exit Sub
q = 0
 
If rép = "call européen" Or "put européen" Then
    d1 = (Log(S / K) + (r - q + vol * vol * 0.5) * T) / (vol * Sqr(T))
    d2 = (Log(S / K) + (r - q - vol * vol * 0.5) * T) / (vol * Sqr(T))
 
..............
 
End sub
 
 
Lorsque par exemple je veux rentrer 5 mois pour la valeur de T, je tape 5/12
 
mais lorsque je calcule mon d1, il ne le comprend pas...
 
J'ai essayé avec Cdbl mais cela ne marche pas..

n°1673263
MagicBuzz
Posté le 18-01-2008 à 12:19:56  profilanswer
 

c'est à dire ? dans ta textbox t'as "1/4" par exemple ?
 
je doute qu'un CDbl permette de résoudre le problème.
 
par contre, tu peux tenter de faire ça (mais c'est crade) :
 

Code :
  1. Dim coin
  2. Dim plop as Double
  3. coin = split(matextbox.text, "/" )
  4. if ubound(coin) > lbound(coin) then
  5.  ' yo j'ai une fraction
  6.  if CDbl(coin(ubound(coin))) <> 0 Then
  7.    plop = CDbl(coin(lbound(coin))) / CDbl(coin(ubound(coin)))
  8.  else
  9.    Msgbox("Division par zéro, proutch, toussa..." )
  10.  end if
  11. else
  12.  plop = CDbl(coin(lbound(coin)))
  13. end if


Message édité par MagicBuzz le 18-01-2008 à 12:20:38
n°1673326
minot435
Posté le 18-01-2008 à 13:52:31  profilanswer
 

Ca marche. merci!!! :-)

n°1674078
dreameddea​th
Posté le 20-01-2008 à 19:21:15  profilanswer
 

La fonction evaluate serait pour moi plus efficace  

Code :
  1. Dim res as string
  2.     On Error Resume Next
  3.     res = Application.Evaluate(str_to_eval)
  4.     If (Err.Number <> 0) Then
  5.         MsgBox ("Error on evaluate" & str_to_eval & " with message " & Err.Description)
  6.         End
  7.     End If
  8.     'utiliser res

n°1674138
MagicBuzz
Posté le 20-01-2008 à 23:01:33  profilanswer
 

Effectivement en VBA.
Ne pas oublier le "on error goto 0" après le "end if"

n°1674140
dreameddea​th
Posté le 20-01-2008 à 23:13:59  profilanswer
 

Exact, c'est vrai que je suis un peu "monomaniaque" du VBA (Excel qui plus est)...
 
Je ne me suis pas plus intéressé que ça au contexte il est vrai...
 
Désolé

n°1674194
tegu
Posté le 21-01-2008 à 09:46:17  profilanswer
 

Je préciserais même en VBA pour Excel (qui n'est pas la seule syntaxe VBA).
Sous Word je ne connais pas de fonction d'évaluation et sous Access, elle s'appelle .Eval au lieu de .Evaluate
Je n'ai pas cherché sous Outlook, FrontPage, PowerPoint, Visio, etc.
Les joies des produits Microsoft :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Convertir une fraction obtenue en Inputbox en une variable numérique

 

Sujets relatifs
Probleme pour recuprer une variable dans un code embed vers un swfOù stocker une variable transitoire ? [Résolu]
récuperer variable dans script shell avec formulaire PHPScinder en partant de la fin d'un variable.
Declaration variable[C] Ajouter une valeur a une variable lors de l'appui d'une touche
Incrementer une variable dans inputboxConvertir date anglaise en francaise
Pb code calcul de la diffraction fraunhofer par methode numerique 
Plus de sujets relatifs à : Convertir une fraction obtenue en Inputbox en une variable numérique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR