[Excel] Appliquer une formule variable
randompseudo
-
wilfried_42 Messages postés 912 Statut Contributeur -
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.
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:
- Excel évaluer formule texte
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Liste déroulante excel - Guide
- Formule somme excel ligne - Guide
- Mise en forme conditionnelle excel formule - Guide
11 réponses
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.
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.
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
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
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")
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")
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
@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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re:
formule à placer :
=CNUM(GAUCHE(B9;TROUVE("*";B9)-1))*x+CNUM(DROITE(B9;NBCAR(B9)-TROUVE("+";B9)))
formule à placer :
=CNUM(GAUCHE(B9;TROUVE("*";B9)-1))*x+CNUM(DROITE(B9;NBCAR(B9)-TROUVE("+";B9)))
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.
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.
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
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
bonjour gbinforme
merci, je ne connaissais pas cette macro EXcel4, ca va bien m'aider
c'est une macro native, elle est utilisable
merci, je ne connaissais pas cette macro EXcel4, ca va bien m'aider
c'est une macro native, elle est utilisable
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
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
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...
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...
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".
=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".