[Excel] Appliquer une formule variable

randompseudo -  
wilfried_42 Messages postés 912 Statut Contributeur -
Bonjour,

je cherche à appliquer une formule stockée dans un tableau, à une valeur donnée. Par exemple, si j'ai un tableau du type :
.......A........B..........C..........D
1 1*x+1 2*x+2 3*x+1 4*x+1
2 1*x+2 2*x+2 3*x+2 4*x+2
3 1*x+3 2*x+3 3*x+3 4*x+3
4 1*x+4 2*x+4 3*x+4 4*x+4
5 1*x+5 2*x+5 3*x+5 4*x+5
6 1*x+6 2*x+6 3*x+6 4*x+6
Je voudrais pouvoir calculer, lorsque je donne une adresse de cellule et un x, la valeur de la fonction.
Exemple :
Cellule B3, x=-2
Résultat : -1
Contraintes (sinon c'est pas drôle) :
- Pas de macro
- Office 2003

NB : J'ai trouvé un fichier qui fait presque ce que je veux, en utilisant une fonction EVALUER(), laquelle ne marche que lorsqu'elle est utilisée dans le champ "Données sources"-> "Série" d'un graphique O_o
X=-5+(LIGNE(A1:A100))*0,1
Y=EVALUER(Courbe!$B$2)
(la cellule B2 contient une formule avec X en inconnue)
Couplé avec des EQUIV(), INDEX() et autres SUBSTITUE(), ça marcherait, mais je ne pervient pas à utiliser EVALUER() dans la feuille de calcul :(

J'espère avoir été compréhensible, merci pour votre aide.

11 réponses

wilfried_42 Messages postés 912 Statut Contributeur 245
 
bonjour

avec la réponse d'eriiiic, tu as une solution qui te permet de tout faire.... regarde le post 11, comme cette macro XL4 sont des macros natives elle sont utilisables en tant que formule dans ce qu'on appelle une formule nommée.
2
wilfried_42 Messages postés 912 Statut Contributeur 245
 
bonjour

Tu mets une contreinte : pas de macro sauf que ce que tu as trouvé Evaluer, n'est pas une fonction native d'excel (enfin de ce que j'en connais) donc c'est une macro soit dans le classeur soit une macro complémentaire.

si tu pouvais fournir un classeur exemple, ce serait peut etre réalisable sans macro

@ te lire
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

j'ai trouvé peut etre une solution
en A1 mettre : =2*x+2 ' Cela provoquera une erreur mais pas grave
en D1 mettre : A1
en E1 mettre : x=3
une formule nommée : menu insertion / noms / définir
le nom : x
fait référence à : =CNUM(STXT(Feuil1!$E$1;TROUVE("=";Feuil1!$E$1)+1;NBCAR(Feuil1!$E$1)-TROUVE("=";Feuil1!$E$1)))
valider
en F1 mettre la formule suivante
=Indirect("D1")
0
randompseudo
 
Tout d'abord, merci pour vos réponses aussi rapides.

@lermitte :
je prends x=-2, d'où :
2*(-2)+3 = -1
Je ne crois pas me tromper...

@wilfried :
Ta solution me permet effectivement de remplacer x par sa valeur dans A1 et dans F1, mais ça n'est pas beaucoup plus efficace que de mettre 3 dans E1, insertion -> nom x : E1
Au final, ça me permet bien de calculer ce que je cherche, mais il faut calculer toutes les formules... Et comme mon fichier original comporte beaucoup de formules compliquées, je préfèrerai éviter cette solution.

Je joins un exemple, mon fichier réel ne peut malheureusement pas être diffusé. Les formules sont dans l'onglet Feuil2.

http://www.cijoint.fr/cjlink.php?file=cj200902/cij82XDZLN.xls
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

formule à placer :
=CNUM(GAUCHE(B9;TROUVE("*";B9)-1))*x+CNUM(DROITE(B9;NBCAR(B9)-TROUVE("+";B9)))
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

Tu as la solution ici par eriiic

En A12 tu mets la formule : =SUBSTITUE(B9;"x";x)
En B12 : =evaluer
après avoir défini en B12 "evaluer" avec la formule =EVALUER("="&Feuil1!A12)

et tu peux mettre autant de x que tu veux dans ta formule.
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour tout le monde,

Une petite précision qui a son importance :
comme dans =EVALUER("="&Feuil1!A12) la référence A12 est passée en relatif il faut absolument que B12 soit sélectionné lorsqu'on défini le nom. Ainsi c'est la cellule de gauche de =evaluer qui est évaluée.
Sinon on risque de s'arracher les cheveux pour que ça marche...
De la même façon on peut définir evaluer pour qu'il évalue une formule située 1 ou 2 cellules au-dessus si on préfère une autre mise en page

eric
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
bonjour gbinforme

merci, je ne connaissais pas cette macro EXcel4, ca va bien m'aider

c'est une macro native, elle est utilisable

0
Raymond PENTIER Messages postés 71870 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
Pourquoi faire simple quand on peut faire compliqué ?

Je supprime la feuille avec la collection de formules semblables (et donc inutiles).
Je mets directement la formule en B12. Simplissime, sans macro, sans fonction, efficace et propre !

https://www.cjoint.com/?cptLkiDMhk
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour Raymond,

C'est bien essayé mais tu n'as pas tout lu :

Et comme mon fichier original comporte beaucoup de formules compliquées, je préfèrerai éviter cette solution.

Pas sûr que la formule unique de test soit suffisante...
0
Raymond PENTIER Messages postés 71870 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
Exact ! Mais j'avais travaillé à partir de la question initiale, sans m'apesantir sur le post 4.
Alors je vous laisse continuer, Wilfried et toi ...
Cordialement.
0
Benj
 
Visiblement il n'y a pas moyen (sans macro) de transformer un texte en formule ; je dirais donc que la seule solution est de rentrer les formules comme des... formules ! Mais le truc pour être économique en calcul est de ne pas les évaluer si c'est inutile. Il faut donc que, au lieu par exemple de 2*x+4 en C5 (je reprends le fichier fourni en exemple), tu écrives :
=SI(ET($Feuille2.D3=4;$Feuille2.D4=2);2*x+4;"")

Evidemment au lieu de mettre 4 et 2 en dur tu récupères les numéros de ligne et de colonne qu'il faut.

J'ose espérer que la sémantique du tableur est suffisamment bien programmée pour ne pas évaluer 2*x+4 dans le cas où le test est faux...

Ainsi tu évalueras "beaucoup" de SI (avant que ce soit sensiblement lent il doit y en avoir vraiment beaucoup !) et une seule "formule compliquée".
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
1ère remarque !!
2*-1+3 ça fait pas -1 mais +1
A+
-1