Fonction eval : "4+5" => 9

0/5 (22 avis)

Vue 8 756 fois - Téléchargée 502 fois

Description

Cette fonction permet d'évaluer une expression.
Entendez par là que si je fais MsgBox Parse("4+5")
j'obtiens 9 !!

pour l'instant, vous ne pouvez utiliser que des opérateurs classiques, et les parenthèses ( + / - * ^ )

je vais sans doute ajouter des fonctions mathématiques

le principe est simple : je convertit l'expression en notation polonaise inverse (cf Web). En gros, 4+5 deviens 45+
pour pouvoir traiter des nombres, j'ai préféré obtenir 4;5;+;

ensuite, il suffit de regarder morceau par morceau......

Codes Sources

A voir également

Ajouter un commentaire Commentaires
ratala Messages postés 248 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 22 juin 2008
6 juil. 2006 à 15:03
moi j'ai fait sa :

Private Function calcule(texte As String) As Long
Dim PosOp As Long
Dim Op As String
Dim Num() As String
PosOp = InStr(1, texte, "+")
If PosOp 0 Then PosOp InStr(1, texte, "-")
If PosOp 0 Then PosOp InStr(1, texte, "/")
If PosOp 0 Then PosOp InStr(1, texte, "*")


Op = Mid(texte, PosOp, 1)

Num = Split(texte, Op, 2)
If InStr(1, Num(1), "=") Then Num(1) = Left(Num(1), InStr(1, Num(1), "=") - 1)
If Calculable(Num(1)) Then Num(1) = calcule(Num(1))
If Calculable(Num(0)) Then Num(0) = calcule(Num(0))
If Op "+" Then Reponse Str(Val(Num(0)) + Val(Num(1)))
If Op "-" Then Reponse Str(Val(Num(0)) - Val(Num(1)))
If Op "/" Then Reponse Str(Val(Num(0)) / Val(Num(1)))
If Op "*" Then Reponse Str(Val(Num(0)) * Val(Num(1)))
calcule = Reponse
End Function

Private Function Calculable(texte As String) As Boolean
Possible = InStr(1, texte, "+") Or InStr(1, texte, "-") Or InStr(1, texte, "*") Or InStr(1, texte, "/")
Calculable = Possible
End Function

et sa marche ters bien
fa7al Messages postés 9 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 2 septembre 2005
2 sept. 2005 à 13:59
Vraiment super !
Ton code fonctionne bien.
j'ai apporté quelques modifications pour le faire tourner sur .NET en thread.

Merci a toi !
pierlag Messages postés 2 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 22 février 2004
22 févr. 2004 à 16:18
J'avais pas vu que c'était en VB6 sorry !
Fox
Olilefou Messages postés 29 Date d'inscription mercredi 1 août 2001 Statut Membre Dernière intervention 9 décembre 2005
22 févr. 2004 à 16:14
Il n'y a pas d'éval avec le compilateur VB6 (marche sous Access qui lui est interprété).
pierlag Messages postés 2 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 22 février 2004
22 févr. 2004 à 15:00
Afficher les 22 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.