Comment caculer la valeur d'une formule stockée dans une chaîne ?
4 réponses
alain
Bonjour à tous.
Voilà, tout est dans le titre :
Je stocke dans des chaînes des formules de calcul ex : "OP1 +
(OP2/100)"
Un traitement remplace les OP1, OP2, etc, par leurs valeurs ce qui
donne par exemple : "12.54+(13.22/100)"
Problème, si je fais un val() sur cette chaine, j'obtient 12.54 en
résultat car l'évaluation s'arrête dès qu'elle rencontre autre chose
qu'un chiffre (dixit l'aide de WD).
Comment obtenir le calcul de cette chaîne ?
Je voudrais éviter de devoir construire un analyseur car les chaines
peuvent être complexes du type :
( OP1 + (3 * (OP4 -2) ) ) * ( (OP6/8) + 3.54 - (OP9-10) )
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Voilà, tout est dans le titre : Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"
[...]
Comment obtenir le calcul de cette chaîne ?
Tu pourras le faire aisément avec la compilation dynamique. F1 et recherche avec le mot clé "compile".
A+
ou tu peux aussi utiliser les opérateurs d'indirections {"OP1"}+{"OP2"}
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
alain
Merci Romain et Eric, ça marche du tonnerre ! :-)
alain avait énoncé :
Bonjour à tous.
Voilà, tout est dans le titre :
Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"
Un traitement remplace les OP1, OP2, etc, par leurs valeurs ce qui donne par exemple : "12.54+(13.22/100)"
Problème, si je fais un val() sur cette chaine, j'obtient 12.54 en résultat car l'évaluation s'arrête dès qu'elle rencontre autre chose qu'un chiffre (dixit l'aide de WD).
Comment obtenir le calcul de cette chaîne ?
Je voudrais éviter de devoir construire un analyseur car les chaines peuvent être complexes du type : ( OP1 + (3 * (OP4 -2) ) ) * ( (OP6/8) + 3.54 - (OP9-10) )
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Merci Romain et Eric, ça marche du tonnerre ! :-)
alain avait énoncé :
Bonjour à tous.
Voilà, tout est dans le titre :
Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"
Un traitement remplace les OP1, OP2, etc, par leurs valeurs ce qui donne par
exemple : "12.54+(13.22/100)"
Problème, si je fais un val() sur cette chaine, j'obtient 12.54 en résultat
car l'évaluation s'arrête dès qu'elle rencontre autre chose qu'un chiffre
(dixit l'aide de WD).
Comment obtenir le calcul de cette chaîne ?
Je voudrais éviter de devoir construire un analyseur car les chaines peuvent
être complexes du type :
( OP1 + (3 * (OP4 -2) ) ) * ( (OP6/8) + 3.54 - (OP9-10) )
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"
Un traitement remplace les OP1, OP2, etc, par leurs valeurs ce qui donne par exemple : "12.54+(13.22/100)"
Problème, si je fais un val() sur cette chaine, j'obtient 12.54 en résultat car l'évaluation s'arrête dès qu'elle rencontre autre chose qu'un chiffre (dixit l'aide de WD).
Comment obtenir le calcul de cette chaîne ?
Je voudrais éviter de devoir construire un analyseur car les chaines peuvent être complexes du type : ( OP1 + (3 * (OP4 -2) ) ) * ( (OP6/8) + 3.54 - (OP9-10) )
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net