Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

évaluer une expression littérale

6 réponses
Avatar
GGAL
Bonjour,

Je souhaiterais évaluer d'une expression donnée sous forme de texte.
Par exemple dans la cellule A1 : 2*s+1
où s est le nom de la cellule B1 et qui vaut 20, par exemple
Avec A2=EVALUATION(A1) donnerait le résultat 41 aussi simplement que si on
avait A1=2*s+1
Existe-t-il une combinaison de formules d'Excel représentant la fonction
EVALUATION pour arriver à ce résultat ?

Merci beaucoup,

GGAL

6 réponses

Avatar
AV
Si j'ai compris.
Dans un module ordinaire

Function EVALU(cel1, cel2)
x = Application.Substitute(cel1, "s", cel2)
EVALU = Evaluate(x)
End Function

Dans la feuille et pour ton exemple :
=EVALU(A1;B1)

AV
Avatar
Modeste
Bonsour® GGAL avec ferveur ;o))) vous nous disiez :

Je souhaiterais évaluer d'une expression donnée sous forme de texte.
Par exemple dans la cellule A1 : 2*s+1
où s est le nom de la cellule B1 et qui vaut 20, par exemple
Avec A2=EVALUATION(A1) donnerait le résultat 41 aussi simplement que si on
avait A1=2*s+1
Existe-t-il une combinaison de formules d'Excel représentant la fonction
EVALUATION pour arriver à ce résultat ?


une reponse de : "MichDenis"
Objet: Re: Afficher une opération / afficher un calcul dans une cellule,
afficher le résultat dans une autre cellule.
Date: vendredi 13 avril 2007 13:02

Tu crées un nom : Barre des menus / insertion / nom / définir

Son Nom : Calcul
Fait référence : =EVALUER(Feuil1!$A1)
A1 = adresse de la première cellule
où tu entreras tes données à calculer : 2*s+1


--
--
@+
;o)))

Avatar
GGAL
C'est un peu ça, mais la fonction ne marche pas. Et il faudrait que ça marche
pour n'importe quelle fonction mathématique.
GGal


Si j'ai compris.
Dans un module ordinaire

Function EVALU(cel1, cel2)
x = Application.Substitute(cel1, "s", cel2)
EVALU = Evaluate(x)
End Function

Dans la feuille et pour ton exemple :
=EVALU(A1;B1)

AV





Avatar
GGAL
Je pense que j'ai trouvé.
Mais il faut créer un module standard pour que Evaluate fonctionne (ne pas
placer la procédure sous Feuil1 ou ThisWorkbook), remplacer la virgule par un
point, et à condition d'avoir Excel 2003, car Replace n'existe pas sous Excel
97 !
Y a-t-il mieux ?

Public Function EVALUATION(Chaine As String)
Application.Volatile
EVALUATION = Evaluate(Replace(Chaine, ",", "."))
End Function
Avatar
AV
Mais il faut créer un module standard pour que Evaluate fonctionne


C'est ce que t'ai dit ! : "...Dans un module ordinaire..."

...car Replace n'existe pas sous Excel 97 !


Je n'ai pas utilisé "Replace" mais "Application.Substitute(....)"
Il n'y a aucun souci avec cette syntaxe quelle que soit la version XL

Quant à remplacer par vba, la virgule par un point, je ne vois pas le rapport
avec la question initiale !

Mais bon... chaucun fait comme il veut...

AV

Avatar
GGAL
Je n'ai pas utilisé "Replace" mais "Application.Substitute(....)"
Il n'y a aucun souci avec cette syntaxe quelle que soit la version XL

Quant à remplacer par vba, la virgule par un point, je ne vois pas le rapport
avec la question initiale !


Quelques explications car j'ai cherché un peu partout en effet :

Application.volatile : pour une fonction dynamique

Comme j'utilise la virgule comme séparateur décimal, la fonction me renvoie
#VALEUR! si j'ai un nombre décimal dans la formule littérale.
L'astuce consiste à remplacer la virgule par le point, d'où Replace. Mais si
Substitute convient aussi pour Excel 97, je suis preneur !

Merci à tous
GGal