Executer une formule en ayant ecrit l'intitule dans une autre cellule

_P-H_

XLDnaute Nouveau
Bonjour,

J'aimerais savoir si il est possible d'executer une formule en l'ayant prealablement ecrite en format texte dans une autre cellule.
Je m'explique :
en A1 .......... IF(max>min,super,non) (la ligne de texte de la formule)
en A2 .......... =A1 (l'execution de la formule)
Cette methode ne fonctionne pas, mais je serais bien heureux de savoir comment effectuer ceci.
Merci d'avance
 

job75

XLDnaute Barbatruc
Re : Executer une formule en ayant ecrit l'intitule dans une autre cellule

Bonjour P-H,

1) Si la formule à exécuter en A1 est bien écrite en anglais (attention, utiliser la virgule et non le point-virgule pour les arguments), copier cette petite fonction VBA dans un Module (Alt+F11 et menu Insertion) :

Code:
Function EVAL(x As String)
Application.Volatile
EVAL = Evaluate(x)
End Function

Puis en A2 entrer la formule :

Code:
=EVAL(A1)

2) Si la formule en A1 est écrite en français :

- menu Insertion-Nom et définir le nom EV par la formule :
Code:
=EVALUER(Feuil1!$A$1)

- en A2 entrer la formule =EV

Nota : EVALUER est une fonction macro Excel 4.0

A+
 
Dernière édition:

_P-H_

XLDnaute Nouveau
Re : Executer une formule en ayant ecrit l'intitule dans une autre cellule

Je me demande maintenant s'il est possible d'integrer le texte de plusieurs cellules dans une formule de sommeprod, car mon nombre de conditions est variable...
exemple:
A1=(Feuille1!B2:C2=A)*(Feuille1!B4:C4=B)*(Feuille1!B5:C5=C)
A2=(Feuille1!B2:C2=A)*(Feuille1!B4:C4=B)
A3=SUMPRODUCT(A1*Feuille1!D1:F10)
Je pense que je devrais passer par VBA aussi, mais comme je ne sais pas encore vraiment l'utiliser je prefere m'en remettre a de bons conseils.
 

tbft

XLDnaute Accro
Re : Executer une formule en ayant ecrit l'intitule dans une autre cellule

bonjour tout le monde

Merci à job pour tes tuyaux.
Je ne connaissez pas application.volatil
J'ai une fonction qui s'exécute quand elle veut...
Je pense que c'est la solution...
 

tbft

XLDnaute Accro
Re : Executer une formule en ayant ecrit l'intitule dans une autre cellule

serait il possible d'avoir un fichier, stp?
car j'ai du mal à voir ce que represente A,B,C
pourquoi avoir une formule en A2, elle n'est pas reprise ailleurs??? sauf boulette de ma part.
 

job75

XLDnaute Barbatruc
Re : Executer une formule en ayant ecrit l'intitule dans une autre cellule

Bonsoir, resalut tbft,

Pour les 3 formules en A1 A2 A3 :

Code:
=(Feuille1!B2:C2=A)*(Feuille1!B4:C4=B)*(Feuille1 !B5:C5=C)
=(Feuille1!B2:C2=A)*(Feuille1!B4:C4=B)
=SUMPRODUCT(A1*Feuille1!D1:F10)

A B C sont nécessairement des noms définis dans le classeur (menu Insertion-Nom).

Sinon il faut les mettre entre guillemets...

Il suffit d'entrer en B1 la formule =EVAL(A1) et de la tirer vers le bas jusqu'à A3...

A+
 

_P-H_

XLDnaute Nouveau
Re : Executer une formule en ayant ecrit l'intitule dans une autre cellule

Je ne comprends ta réponse job75, je vais donc rexpliquer ce que je cherche car je me suis mal exprimé la première fois.
En fait ce que j'aimerais c'est que les conditions (.....)*(.....)*(.....) qui sont dans une cellule au format texte, cette dernière ayant sa valeur qui change, viennent s'intégrer dans une formule de sommeprod.
Car une formule de sommeprod c'est: sommeprod((condition1)*(condition2)*zone_de_recherche)
Ma zone de recherche ne change jamais dans la formule mais les conditions changeront en fonction de la valeur de l'autre cellule.
Je tente de mieux m'ecpliquer en attendant un fichier exemple demain.

cellule de choix en A1
A1=(condition1) ou A1=(condition1)*(condition2) ou A1=(condition2)
puis en A2 il y a le sommeprod qui s'effectue
A2=sommeprod(A1*zone_de_recherche)
de manière à obtenir A2=sommeprod((condition1)*(condition2)*zone_de_recherche) si on a choisit A1=(condition1)*(condition2)
a+
 

job75

XLDnaute Barbatruc
Re : Executer une formule en ayant ecrit l'intitule dans une autre cellule

Bonjour P-H, le forum,

Merci pour le fichier, mais pas bien sûr d'avoir tout compris.

A priori si vous avez une version française d'Excel, entrez en B13 la formule :

Code:
=SOMMEPROD(EVAL(B12)*C6:N6)

Si version anglaise :

Code:
=SUMPRODUCT(EVAL(B12)*C6:N6)

Remarque 1 : c'est mieux de remplacer le signe * par un point-virgule (version française) ou par une virgule (version anglaise).

Remarque 2 : vous pouvez (mais quel intérêt ?) entrer en F13 la formule :

Code:
="=SUMPRODUCT("[COLOR="Red"]&B12&[/COLOR]"*C6:N6)"

et l'évaluer en entrant en F14 =EVAL(F13)

Edit : je joins quand même le fichier.

A+
 

Pièces jointes

  • Etude(1).xls
    31 KB · Affichages: 98
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 899
Membres
101 834
dernier inscrit
Jeremy06510