Rechercher : dans
Par :

Excel - Exécuter formule stockée comme texte

Dernière réponse le 5 aoû 2009 à 11:41:21 Dav, le 3 mar 2008 à 22:06:19 
 Signaler ce message aux modérateurs

Bonjour,

Sous Excel, j'aimerais savoir s'il est possible d'exécuter, dans une cellule, une formule qui serait écrite dans une autre cellule en tant que simple chaîne de caractères.
Il serait ainsi possible de remplacer une interminable formule "SI" (sinon SI, sinon SI, etc.) par une recherche dans une matrice de formules, en fonction du cas qui se présente.

Par exemple - Supposons une feuille qui convertit des unités de mesure (Celsius à Fahrenheit, gallons à litres, etc.) :
- Un onglet "Conversion" contient deux cellules modifiables : A1="Valeur à convertir" et A2-"Conversion à appliquer" et une cellule non-modifiable A3-"Résultat".
- Un onglet "Dictionnaire des formules de conversion" contient deux colonnes A:NomFormule et B:Formule. Un exemple - en A2 il y aurait "Pouce->Cm" et en B2 "'=Conversion!$A$1*2.54
- Dans la cellule Conversion!A3, est-il possible d'utiliser les formules du "Dictionnaire des formules" ???

Autre exemple pour simplifier encore ma question :
- Cellule A1 : '=Si(B1=1;"Vrai";"Faux") (Noter l'apostrophe devant la formule qui en fait une simple chaine texte)
- Cellule B1 : 1
- Cellule A2 ???Execute formule inscrite dans A1??? : Vrai

Merci !

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Excel Exécuter formule stockée comme texte » dans :
Formules Excel de base VoirVoici quelques formules de bases qui sont faciles à réaliser et qui peuvent donner un peu de vie à une feuille Excel ! Pour cette astuce, on supposera que l’on veut que le résultat s’affiche dans la cellule B10 et on se servira principalement des...

1

gbinforme, le 4 mar 2008 à 00:56:09

Bonjour

Sous Excel, j'aimerais savoir s'il est possible d'exécuter, dans une cellule, une formule qui serait écrite dans une autre cellule en tant que simple chaîne de caractères.


La réponse est positive et je te donnes un exemple de réalisation : http://cjoint.com/?deaY7Hjvod

Il faut tout de même faire attention à l'écriture syntaxique des formules qui doit être sans erreurs.

Il serait ainsi possible de remplacer une interminable formule "SI" (sinon SI, sinon SI, etc.)

Quand on est noyé dans les "SI" c'est que l'organisation des données est à revoir ou qu'il faudrait essayer de réfléchir à d'autres fonctions plus faciles à maintenir comme effectivement une recherche dans une matrice de résultats.

Toujours zen

Répondre à gbinforme

2

Dav, le 4 mar 2008 à 15:25:36

Merci beaucoup gbinforme !
Comme ce besoin semble assez simple et doit être récurrent, j'eus cru qu'il était possible de le faire sans VBA... Mais après tout, les quelques lignes de code à appliquer sont toutes simples, j'aurais dû jeter un oeil de ce coté plus tôt.

Merci encore !

Répondre à Dav

3

eriiic, le 4 mar 2008 à 19:53:44

Bonjour tout le monde,

Il est effectivement possible de le faire sans vba mais avec une astuce.
Je le livre à titre d'info (vba permet plus de souplesse) mais pour un besoin ponctuel ça peut servir, surtout si on n'est pas à l'aise avec vba.

Sous un ancien excel (le 4 ?) il y avait la fontion =EVALUER(A2) qui permettait justement de calculer le résultat de la fonction ecrite en TEXTE dans A2. Par exemple A1: 5 A2: '=A1*2.54

La fonction (plus documentée) a été désactivée. Si je saisi en A3: =EVALUER(A2) j'ai droit à 'fonction non valide'.

Par contre, en passant par la définition d'un nom on arrive à passer.
Menu 'insertion / nom / définir...'
nom : fonction_variable
fait référence à : =EVALUER(Feuil1!$A$2)

En A3 je saisis le nom: =fonction_variable et j'obtiens le résultat de'=A1*2.54 soit 12.7

Je n'ai pas regardé dans le détail si c'est facilement applicable à ton cas car de toute façon tu as la solution en vba de gb, mais c'était l'occasion de rappeler cette astuce
eric

Répondre à eriiic

4

Dav, le 4 mar 2008 à 20:10:46

Excellent petit truc ! Merci Eric.
En combinant avec la RechercheV et une indirection (INDIRECT), j'arrive à ajouter la souplesse nécessaire.
(Je me souviens maintenant de cette fonction des versions antérieur de Excel... et j'imagine qu'elle a été retirée pour raison de sécurité.)

Répondre à Dav

5

tracker54, le 30 jui 2009 à 13:53:20

Bonjour,

Dav à Ecrit:
Excellent petit truc ! Merci Eric.
En combinant avec la RechercheV et une indirection (INDIRECT), j'arrive à ajouter la souplesse nécessaire.
(Je me souviens maintenant de cette fonction des versions antérieur de Excel... et j'imagine qu'elle a été retirée pour raison de sécurité.)


Pourriez-vous m'éclairer sur la méthode avec RECHERCHEV et fonction Indirect?

Merci d'avance,

Répondre à tracker54

6

Dav, le 30 jui 2009 à 22:31:26

La fonction RECHERCHEV permet de rechercher rapidement une valeur dans une matrice à partir d'un index. La fonction INDIRECT permet d'interpréter le contenu d'une cellule comme s'il s'agissait d'une référence à une plage. La conjugaison de ces différentes fonctions permet de pointer vers une cellule qui contiendra une formule à passer à la fonction EVALUER.
C'est plutôt complexe à expliquer en qq mots. Si tu veux plus de détails, créé un e-mail temporaire sur hotmail, écris le ici et j'enverrai un chiffrier exemple.

Répondre à Dav

7

tracker54, le 31 jui 2009 à 00:06:42

Bonsoir, merci pour ta réponse rapide, voici une adresse mail: tracker54@hotmail.fr
En fait j'avais créer un autre poste entre temps, tu trouveras plus d'explication dans le lien ci-dessous,
http://www.commentcamarche.net/... Si ma tante en avait, on l'appellerai mon Oncle ...

Répondre à tracker54

8

eriiic, le 31 jui 2009 à 06:45:34

Bonjour tout le monde,

Pour que tout le monde puisse en profiter il est possible de déposer le fichier sur cijoint.fr et de coller le lien fourni ici.
eric

Répondre à eriiic

9

tracker54, le 31 jui 2009 à 09:34:55

Bonjour, voici le lien du fichier,
http://www.cijoint.fr/cjlink.php?file=cj200907/cijUvjA1nG.xl­s Si ma tante en avait, on l'appellerai mon Oncle ...

Répondre à tracker54

14

gbinforme, le 31 jui 2009 à 22:56:26

Bonjour

Avec la méthode d'Éric que je salue, tu peux le faire ainsi en utilisant les références relatives et en introduisant une colonne de calcul :

http://www.cijoint.fr/cjlink.php?file=cj200907/cijmwYqnG1.xl­s

Il te faudra définir en relatif les noms pour les angles des coudes et autres paramètres.
Toujours zen

Répondre à gbinforme

15

tracker54, le 2 aoû 2009 à 18:07:35

Bonjour et merci gbinforme, ton exemple résoud mon problème même si je n'ai pas bien compris!!! Je vais l'intégrer dans mon fichier avec angle des coudes et tout le tralala...
Merci encore, Si ma tante en avait, on l'appellerai mon Oncle ...

Répondre à tracker54

16

gbinforme, le 2 aoû 2009 à 19:29:20

Bonjour

même si je n'ai pas bien compris!!!

En fait tes noms pour les formules étaient nommés sur toute la colonne et si pour certaines fonctions cela fonctionne pour "EVALUER" il faut que la formule s'adresse à la cellule de la ligne concernée seulement.
Toujours zen

Répondre à gbinforme

17

 tracker54, le 5 aoû 2009 à 11:41:21

OK, bien saisi maintenant... Merci encore
--

Répondre à tracker54

10

Dav, le 31 jui 2009 à 16:29:32

Bonjour,

Voici l'exemple dont je parlais hier.
http://www.cijoint.fr/cjlink.php?file=cj200907/cijSXOd6ui.xl­s

Répondre à Dav

11

Dav, le 31 jui 2009 à 17:29:36

Bonjour à tous encore. Voici une note supplémentaire.

Il semble que l'utilisation du petit truc fournit par Éric est convertit d'une manière ou d'une autre par Excel en Macro. Lorsque j'ouvre le chiffrier (sous Excel 2003 SP3), un message m'indique qu'il existe des macros Excel 4.0 (Bizarre !) et le fameux champ qui utilise la fonction EVALUER (C7) affichera une erreur si on choisit de ne pas exécuter les macros.

Sur mon poste de travail, je fais ce qui suit pour remédier à cette situation (deux solutions) :
1- Accepter d'utiliser les macros malgré l'avis. Cela permettra à la fonction EVALUER de s'exécuter.

OU

1- Ignorer l'avis à propos de la macro Excel 4.0 - c'est à dire : refuser l'exécution des macros.
2- Ouvrir le menu de définition de noms (Insertion/Nom/Définir)
3- Sélectionner le nom "FormuleEvaluee"
4- Ne rien changer, simplement appuyer sur le bouton "OK"
5- Le champ C7 devrait maintenant afficher une valeur.

Répondre à Dav

12

eriiic, le 31 jui 2009 à 19:55:13

Bonjour,

Beau fichier exemple dav

Oui, c'est bien une macro excel 4. Dans cette version les macros étaient des formules qu'on saisissait les unes en dessous des autres dans une feuille.
Et même si certaines fonctions comme supprimer.fichier() pourrait être considérées comme dangereuses elles semblent ne pas fonctionner sur les autres versions excel. Très peu de ces fonctions sont réutilisables, on peut donc accepter ces macros.
De toute façon les solutions demandent souvent du vba qui permet aussi beaucoup de choses...
Un indice de fiabilité pourrait être le nombre de messages déposés sur forum par la personne te fournissant le fichier.
eric

Répondre à eriiic

13

Dav, le 31 jui 2009 à 20:38:43
  • +1

Merci Éric !
(J'ai pas de mérite, c'était ton truc !)

Une dernière note à propos des formules versus le VBA.
Je programme personnellement du VBA depuis 12 ans. Je le connais bien. Cependant je l'utilise de moins en moins... Pas que ce ne soit pas efficace (au contraire, cela fait très bien le travail et souvent plus facilement qu'avec des enchaînement de formules) mais ce n'est pas portable.
On voit de plus en plus des solutions bureautique Web (GoogleDocs, ThinkFree, Zoho, etc.). Lorsqu'on créé une feuille Excel dans laquelle on réussit à implémenter la logique entièrement par des formules, on accroit la portabilité de l'application et les possibilités d'en faire le partage.

Bonne fin de semaine à tous et au plaisir !

Répondre à Dav
Collection CommentÇaMarche.net