Accueil > > > EVALUATION D'UNE FORMULE DANS UNE CHAINE EX:"2+9*51-25/5"
EVALUATION D'UNE FORMULE DANS UNE CHAINE EX:"2+9*51-25/5"
Information sur la source
Description
Cette fonction recoit en paramètre une chaine contenant une formule de math simple (4 opérateurs).. du type : "2+9*51-25/5", et renvoie le résultat (ici 456)... Pour faire ca, j'isole chaque sous-partie (Nombre, Separateur, Nombre), je la calcule, et la ré-insère dans la formule une fois calulée... puis au suivant.. tant qu'il y a un separateur...
Source
- Public Function Evaluate(Formule As String) As Double
-
- Dim PosCour, PosSep, PosAV, PosAP, Av, Ap, Res
- Dim Separateurs(3), NumSep, Formule2
-
- 'liste des separateurs
-
- Separateurs(0) = "/"
- Separateurs(1) = "*"
- Separateurs(2) = "+"
- Separateurs(3) = "-"
-
- For NumSep = 0 To 3
-
- PosSep = InStr(1, Formule, Separateurs(NumSep))
- While PosSep > 0
- 'on determine le nombre AVANT le separateur
- PosCour = PosSep - 1
- While (IsNumeric(Mid(Formule, PosCour, 1)))
- PosCour = PosCour - 1
- If PosCour = 0 Then GoTo suite:
- Wend
- suite:
- PosAV = PosCour + 1
- Av = Mid(Formule, PosAV, PosSep - PosAV)
- 'on determine le nombre APRES le separateur
- PosCour = PosSep + 1
- While IsNumeric(Mid(Formule, PosCour, 1))
- PosCour = PosCour + 1
- Wend
- PosAP = PosCour
- Ap = Mid(Formule, PosSep + 1, PosAP - PosSep - 1)
-
- 'On calcule la sous-partie isolée
- Select Case NumSep
- Case 0: '/
- Res = Val(Av) / Val(Ap)
- Case 1: '*
- Res = Val(Av) * Val(Ap)
- Case 2: '+
- Res = Val(Av) + Val(Ap)
- Case 3: '-
- Res = Val(Av) - Val(Ap)
- End Select
-
- 'on réécrit la formule avec la sous-partie calculée
- Formule = Left(Formule, PosAV - 1) & Trim(Str(Res)) & Mid(Formule, PosAP)
- PosSep = InStr(1, Formule, Separateurs(NumSep))
- Wend
- Next
- Evaluate = Val(Formule)
- End Function
Public Function Evaluate(Formule As String) As Double
Dim PosCour, PosSep, PosAV, PosAP, Av, Ap, Res
Dim Separateurs(3), NumSep, Formule2
'liste des separateurs
Separateurs(0) = "/"
Separateurs(1) = "*"
Separateurs(2) = "+"
Separateurs(3) = "-"
For NumSep = 0 To 3
PosSep = InStr(1, Formule, Separateurs(NumSep))
While PosSep > 0
'on determine le nombre AVANT le separateur
PosCour = PosSep - 1
While (IsNumeric(Mid(Formule, PosCour, 1)))
PosCour = PosCour - 1
If PosCour = 0 Then GoTo suite:
Wend
suite:
PosAV = PosCour + 1
Av = Mid(Formule, PosAV, PosSep - PosAV)
'on determine le nombre APRES le separateur
PosCour = PosSep + 1
While IsNumeric(Mid(Formule, PosCour, 1))
PosCour = PosCour + 1
Wend
PosAP = PosCour
Ap = Mid(Formule, PosSep + 1, PosAP - PosSep - 1)
'On calcule la sous-partie isolée
Select Case NumSep
Case 0: '/
Res = Val(Av) / Val(Ap)
Case 1: '*
Res = Val(Av) * Val(Ap)
Case 2: '+
Res = Val(Av) + Val(Ap)
Case 3: '-
Res = Val(Av) - Val(Ap)
End Select
'on réécrit la formule avec la sous-partie calculée
Formule = Left(Formule, PosAV - 1) & Trim(Str(Res)) & Mid(Formule, PosAP)
PosSep = InStr(1, Formule, Separateurs(NumSep))
Wend
Next
Evaluate = Val(Formule)
End Function
Conclusion
Bon, le code est pas parfait, loin de là, mais c'est l'algo qui compte non... ;) N'hésitez pas a m'insulter parceque je gère pas les erreurs, j'utilise un goto, et parce que je gère pas les parenthèses aussi... m'enfin voilà koi... si vous pouvez le completer, n'hezitez pas... Merci à DoDoDODo ;p
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Formule Mathematique [ par VBSkinou ]
Bonjour tous le monde voila c ma première participation au forum : Dans le Cadre de ma PFE (VoIP) d'ingéniorat en réseaux informatique et télécommun
Calcul d'une formule dans une cellule excel [ par mfaure ]
Bonjour a tousJ'ai cree une macro qui rempli des cellules, soit avec des donnes chifrees renseignees a partir de userforms, soit avec des formules sim
Formule d'une somme en Crystal Report [ par TrafMaxime ]
Salut à tous, j'espère que vous êtes inspirés aujourd'hui...Voilà j'ai un petit problème avec Crystal Report..A chaque groupe et suivant certains para
tracage d'une courbe mathematique [ par sansri ]
salut les amis comme d'hab les problem sont touj les prob; alors je vous pris de m'éxpliqué le travail de tracer une courbe math dans picturbox et si
crystal report 8.5 et la formule count [ par carmella ]
Bonjour, comment utilise la formule count(champ,champconditionnel, condition) en crystal report 8.5?Merci.cari
Nommer et un tableau et l'utiliser dans une formule. [ par SHUN2007 ]
Bonjour à tous,Je suis entrain de m'arracher les cheveux sur le problème suivant et j'ai besoin d'aide / d'une macro...Imaginons:Je fais un vlookup da
mettre Formule excel en Vba [ par lispo ]
Bonjour,je desire mettre une formule excel en Vbaex:Private sub Button_Click()dim nom as stringma formule excel = OFFSET(C1;MATCH(G19;C2:C20;0);1))n
Ecrire une formule excel depuis vba [ par xavtry ]
Salut à tous, un petit truc a deux balle: je crée depuis vba des nouvelle feuille qui prennent le nom de ma variable x, ca ok.Je voudrai que ma cellu
VB & formule EXCEL avec guillemet [ par Xabixu ]
Je souhaite avec vb 2005 mettre une formule dans une feuille EXCEL. Hélas la formule compote des " qui je pense doit gêner. La formule EXCEL est =TEXT
macro??? [ par utelec02 ]
Bonjour,Je voulais savoir comment faire une macro qui ne copie que les valeurs.Car en faite j ai un petit probleme je dois recuperer la valeur d une c
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|