Formule dans chaine de caractére

Résolu
enzosp Messages postés 22 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 3 février 2010 - 28 juil. 2006 à 12:53
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 - 20 août 2006 à 15:02
Bonjour,

mon probleme est simple, je voudrais qu'une opération saisie dans une textbox donne le résultat dans un variable:
ex: text1="3x3"  donne pour une variable v ->9

v=val(text1) donne 3 et non 9

comment faire? je pense que c'est tres simple, mais j'ai pas trouvé la fonction...

Merci d'avance.

Enzo

9 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 juil. 2006 à 23:48
Comme t'a dit Enzosp, EVAL pourrait le faire. Tu dois ajouter un contrôle à ta Form.

Microsoft Script Control


Ensuite tu peux utiliser la fonction Eval et faire

MsgBox ScriptControl1.eval("2 * 5") ' et ça te donnera 10 comme réponse

MPi
3
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
28 juil. 2006 à 13:00
Essai Eval au lieu de Val
0
enzosp Messages postés 22 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 3 février 2010
28 juil. 2006 à 17:47
la fonction Eval n'est pas reconnue pas Visual Basic

Enzo
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 juil. 2006 à 19:52
Salut,

Essaie cette procédure :

<small>
Coloration syntaxique automatique </small>
'*** j'ai créé une Form, contenant un TextBox (Text1)
'       et un CommandButton (Command1)

Private Sub Command1_Click() 

    Dim Partie1        As Long 
    Dim Partie2        As Long 
    Dim Flg              As Boolean 
    Dim i                  As Integer 
    Dim Operateur   As String 
    Dim Caract        As String 
    Dim Resultat      As String 

Flg =  False 

For i = 1 To  Len (Text1.Text) 
    Caract  = Mid(Text1.Text, i, 1) 

    If Not IsNumeric(Caract) Then 
        Operateur = Caract 
        Flg = True 
    Else 
        If Flg = False Then 
            Partie1 = Partie1 & Caract 
        Else 
            Partie2 = Partie2 & Caract 
        End If 
    End If 

Next i 

Select Case Operateur 
    Case "x":       Resultat = Partie1 * Partie2 
    Case "/":        Resultat = Partie1 / Partie2 
    Case "+":       Resultat = Partie1 + Partie2 
    Case "-":        Resultat = Partie1 - Partie2 
End Select 

MsgBox Resultat 

End Sub 

<small>
Coloration syntaxique automatique </small>

@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
enzosp Messages postés 22 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 3 février 2010
28 juil. 2006 à 20:02
effectivement on peut passer par une fonction, mais je voulais eviter cela pour ne pas gerer les parentéses...


Du même type de prog, j'ai pu récuperer des exemples de "caculatrice" en VB.


Il aurais été plus simple autrement,mais si cela n'existe pas...

Merci quand même.

Enzo
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 juil. 2006 à 20:08
Malheureusement cela n'existe pas, il faut absoluement passer par une fonction.
Ou alors, mais beaucoup plus complexe, tu gères l'interception des touches d'opérateur par API mais dans tous les cas, il te faudra une procédure qui calcul le résultat.

@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
29 juil. 2006 à 11:11
Oups, désolé Tri_Yann, c'est bien ton nom que je voulais inscrire comme référence... maladresse de ma part :(

MPi
0
cs_Taupe007 Messages postés 3 Date d'inscription mercredi 16 août 2006 Statut Membre Dernière intervention 17 juin 2009
19 août 2006 à 08:02
Il y a un problème sous acces car les calcul sont impossible sur les nombres avec virgules au lieu d'un point (4,27/2 impossible) et (4.27/2 possible)

Taupe007
0
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
20 août 2006 à 15:02
Je pense que si tu fais un : 



IsNum(Replace("4,27", ",", "."))/2



ca devrait marcher

Yann
0
Rejoignez-nous