Calculer une formule stockée sous forme de texte

Bonjour le forum,

Je ne parviens pas à faire calculer une formule stockée sous forme de texte... Mon classeur traite de facturation de l'utilisation du domaine public, et je dois traiter tous les cas de figure imaginé par mes collègues (!).

Pour ce faire, dans une feuille "Paramètres", je stocke des Modes de calcul : à un libellé, librement saisi par l'utilisateur, est associée une formule, rédigée sous forme de texte. Exemple de calcul d'une durée en jours : Fin-Début+1 (ces noms correspondant aux colonnes contenant ces dates dans ma feuilles "Données").

Dans ma feuille "Données", je souhaite pouvoir utiliser ces textes de formules via une fonction. Les formules-texte sont rapatriées par une RECHERCHEV en fonction du mode de calcul choisi par l'utilisateur... L'exemple ci-dessus est repris en ligne 5.

Mais, voilà, Excel ne veut pas me faire le calcul : j'ai tourné ça dans tous les sens (sauf le bon, sans doute !), en vain...

Qui trouvera gagnera mon estime absolue et éternelle ! Cordialement, Daniel

Bonjour,

Il faut faire précéder les formules par le signe =.

Si vous écrivez =Fin-Début+1 vous aurez le résultat calculé.

Merci Robjam,

J'ai essayé de mettre le signe "="

  • dans la fonction : Définir_Durée = Evaluate("=" & MaFormuleDurée)
  • dans la formule en colonne J : =SIERREUR("="&RECHERCHEV(Mode_Calcul;Modes_Calcul;2;FAUX);"")
  • dans la formule-texte : '=Fin-Début+1

J'obtiens le même résultat : #VALEUR!

Cordialement, Daniel

Bonjour,

Voir le fichier joint j'ai signalé les choses incorrectes dans la feuille paramètres.

Merci Robjam,

J'ai dû mal exposer mon objectif : il ne s'agit pas de calculer des valeurs dans la feuille Paramètres, mais de définir les modalités de calcul qui seront appliquées par la fonction Evaluate dans la procédure Définir_Durée... Et pour l'instant je ne cherche à calculer que la durée, en colonne K

Mon problème reste donc entier, a priori...

En réalité tu souhaites inventer des formules nécessaires à ton usage si j'ai bien compris. pas juste appliquer ton texte c'est ça?

Oui, c'est plutôt ça : vu le nombre de cas de figure potentiels, je ne peux pas rédiger la formule à l'avance.

L'idée est de la stocker sous forme de texte et de la faire exécuter par l'instruction Evaluate à l'intérieur d'une fonction personnalisée.

Pas facile à expliquer mais on est sur la voie...

La fonction Définir_Durée donne des résultats corrects tant que la formule-texte est passée directement entre les parenthèses de la fonction. Ce qui ne fonctionne plus, c'est quand on la récupère dans une cellule ou grâce à une formule... Voir K5 et K6 sur la feuille Données dans le fichier joint

Je sais que j'avais été amené à créer une fonction (en vrai c'est sabV qui l'avait créé ^^) sous cette forme à mettre en module 1 :

Function Valeur_attendue(matrice As Range, Valeur_connue, Résultat_voulu) As Integer
 Dim ligne As Long, col As Integer
 lign = Application.Match(Valeur_connue, matrice.Columns(1), 0)
 col = Application.Match(Résultat_voulu, matrice.Rows(lign), 0)
 Valeur_attendue = matrice(1, col)
End Function

Je suppose donc que tu peux créer des fonctions sur ce principe. Si quelqu'un a l'info et passe ils pourront peut être t'aider c'est pas mon domaine ^^

Il y a un cours excel pratique ici si tu souhaites : https://www.excel-pratique.com/fr/vba/creer_fonction_personnalisee.php

Désolé de ne pas pouvoir t'aider pour le coup, mais les prochains qui liront le pourront surement maintenant qu'on a compris

OK merci Atro...

up

Rechercher des sujets similaires à "calculer formule stockee forme texte"