[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
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
A voir également:
- Excel évaluer formule texte
- Formule excel - Guide
- Liste déroulante excel - Guide
- Formule moyenne excel - Guide
- Formule excel si et - Guide
- Formule excel pour additionner plusieurs cellules - Guide
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
243
30 avril 2009 à 19:50
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.
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.
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
243
13 févr. 2009 à 12:38
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
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
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
243
13 févr. 2009 à 12:47
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")
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
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
243
13 févr. 2009 à 17:12
13 févr. 2009 à 17:12
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)))
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
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.
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.
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
14 févr. 2009 à 08:35
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
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
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
243
13 févr. 2009 à 18:50
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
merci, je ne connaissais pas cette macro EXcel4, ca va bien m'aider
c'est une macro native, elle est utilisable
Raymond PENTIER
Messages postés
58393
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
17 096
13 févr. 2009 à 19:37
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
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
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
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...
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...
Raymond PENTIER
Messages postés
58393
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
17 096
14 févr. 2009 à 03:43
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.
Alors je vous laisse continuer, Wilfried et toi ...
Cordialement.
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".
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
13 févr. 2009 à 12:50
Bonjour,
1ère remarque !!
2*-1+3 ça fait pas -1 mais +1
A+
1ère remarque !!
2*-1+3 ça fait pas -1 mais +1
A+