Paramétrage de formules interprétables par VBA

Hello la communauté,

J'ai créé un outil pour qu'une tierce personne lui permettant d'aller chercher dans x rapports des informations, de les calculer et les restituer dans un fichier créé à part à chaque utilisation de la macro.

Chaque rapport est différent. Donc aujourd'hui, elle paramètre dans l'outil le chiffre offset correspondant aux colonnes dans lesquelles se trouvent les infos.

Rapport A :

  • Paramètre 1 (Référence de l'article) : C (pour désigner la colonne du rapport ou se trouvant la référence repère de la recherche d'infos)
    Paramètre 2 (Quantité vendue) : 3 (pour désigner l'offset de la colonne F ou se trouve la quantité vs la référence article)
    Paramètre 3 (CA) : 4 (pour désigner l'offset de la colonne G ou se trouve le CA)

Rapport B :

etc..

Donc, dans la macro j'utilise ces offsets pour aller chercher les infos c.offset(0,"Paramètre x") pour récupérer la bonne infos.

Puis je calcule par exemple, le prix de l'article avec c.offset(0,"Paramètre 3") /c.offset(0,"Paramètre 2")

Jusque là tout va bien.

En revanche, mes formules sont inscrites en dur dans le code et donc l'utilisateur ne peut pas les changer si besoin ou ajouter de nouveaux indicateurs.

=> Je cherche donc à ce que les formules deviennent paramétrables pour l'utilisateur du type

J'avais pensé que l'utilisateur écrirait la formule qui va bien pour chaque rapport du type : G/F*((100-R)/100)

Et a partir de ce moment la je traduis la formule dans la macro en c.offset(0,"Paramètre 3") / c.offset(0,"Paramètre 2") * ((100 - c.offset(0,15))/100)

Le problème c'est que si je place cette formule dans une variable ca me fait le texte de la formule..

Calc_resultat = c.offset(0,"Paramètre 3") / c.offset(0,"Paramètre 2") * ((100 - c.offset(0,15))/100)

et non

Calc_resultat = 7,4

Je ne trouve pas comment rendre cette formule interprétable par vba...

Est-ce que vous auriez une idée ou une alternative pour arriver à mes fins ?

Merci,

Bonne journée

Will

bonjour

1/

pour faire des indicateurs et des graphiques et des stats à partir de plusieurs fichiers, intéresse-toi à Power BI Desktop gratuit

sorte de complément d'Excel

capable d''ouvrir d'un clic des centaines de fichiers

et ensuite on affficher des stats comparatives si nécessaire

2/

en restant dans Excel, utiliser Power Query pour récupérer des données de divers fichiers

voir les tutos sur youtube

amitiés

Hello JMD,

Merci pour ta réponse, je vais regarder Power Query effectivement, ca m'intéresse.

Dois-je en conclure qu'avec VBA dans sa version native ne peut pas répondre à ce que je recherche ?

Merci, W

Bonjour à tous,

regarde du coté de Evaluate()

eric

Bonjour Eric,

J'avais essayé evaluate() dans tous les sens mais ca me renvoit toujours un #valeur! ou #nom?

Je vous joins le code utilisé

4test.xlsm (27.89 Ko)

re

intervention juste pour dire qu'avec VBA, on peut tout faire. Même recréer Word et Outlook dans Excel, et inversement aussi

amitiés

Je le pensais aussi et bien pas tant que ça apparemment JMD

En regardant les solutions qui m'intéressent, on trouve une potentielle (apparemment apporté pour le fun par son auteur) qui créée un module pour exécuter le string et l'efface ensuite.

C'est évidemment pas une méthode pas évidente à faire tourner sans erreur d'ailleurs et non recommandée a priori.

https://stackoverflow.com/questions/43216390/how-to-run-a-string-as-a-command-in-vba?noredirect=1&lq=1

Donc je crois que je vais devoir revoir ma méthode de paramétrage des formules..

J'ai du mal à comprendre ton fichier.

pour Evaluate il faut lui fournir une formule correcte et non qq chose comme D/E.

Avec ton exemple Calc_resultat = c.offset(0,"Paramètre 3") / c.offset(0,"Paramètre 2") * ((100 - c.offset(0,15))/100) ça donnerait qq chose comme ça :

Calc_resultat = evaluate(c.offset(0,"Paramètre 3").address & "/" & c.offset(0,"Paramètre 2").address & "* ((100 - " & c.offset(0,15).address & ")/100)")

La chaine résultante doit te donner la formule que tu attends et pas autre chose.

N'oublie pas que Address admet des paramètres pour avoir les références absolu/relatif ligne/colonne selon ton besoin.

Et que pour du relatif, la cellule active compte... Privilégier les ref absolues.

eric

Rechercher des sujets similaires à "parametrage formules interpretables vba"