Fonction eval : "4+5" => 9

Soyez le premier à donner votre avis sur cette source.

Vue 8 295 fois - Téléchargée 458 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
Messages postés
248
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
22 juin 2008

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
Messages postés
9
Date d'inscription
mardi 4 mars 2003
Statut
Membre
Dernière intervention
2 septembre 2005

Vraiment super !
Ton code fonctionne bien.
j'ai apporté quelques modifications pour le faire tourner sur .NET en thread.

Merci a toi !
Messages postés
2
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
22 février 2004

J'avais pas vu que c'était en VB6 sorry !
Fox
Messages postés
29
Date d'inscription
mercredi 1 août 2001
Statut
Membre
Dernière intervention
9 décembre 2005

Il n'y a pas d'éval avec le compilateur VB6 (marche sous Access qui lui est interprété).
Messages postés
2
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
22 février 2004

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.