évaluer une expression littérale

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
AV
Le #4447321
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
Modeste
Le #4447311
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)))

GGAL
Le #4447221
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





GGAL
Le #4446481
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
AV
Le #4446231
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

GGAL
Le #4445931
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

Publicité
Poster une réponse
Anonyme