[Excel] Appliquer une formule variable

Fermé
randompseudo - 13 févr. 2009 à 11:58
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 - 30 avril 2009 à 19:50
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.
A voir également:

11 réponses

wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 242
30 avril 2009 à 19:50
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 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 242
13 févr. 2009 à 12:38
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 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 242
13 févr. 2009 à 12:47
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
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 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 242
13 févr. 2009 à 17:12
re:

formule à placer :
=CNUM(GAUCHE(B9;TROUVE("*";B9)-1))*x+CNUM(DROITE(B9;NBCAR(B9)-TROUVE("+";B9)))
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
13 févr. 2009 à 18:42
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
14 févr. 2009 à 08:35
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 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 242
13 févr. 2009 à 18:50
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 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
13 févr. 2009 à 19:37
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 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
13 févr. 2009 à 22:11
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 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
14 févr. 2009 à 03:43
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
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 févr. 2009 à 12:50
Bonjour,
1ère remarque !!
2*-1+3 ça fait pas -1 mais +1
A+
-1