Utiliser Excel comme "fonction"

Bonjour,

J'essaie d'utiliser Excel comme une fonction - ça doit être faisable, mais comment ??

Par exemple :

en B1 : une valeur d'entrée

en B2 : une formule tarabiscotée qui prend B1 comme paramètre, entre autres

en C12 : le résultat de B2 si B1 prenait une autre valeur, quitte à effectivement modifier B1

Bien sûr, je ne peux pas étendre les cellules B1 et B2, c'est là tout le problème !

Vous m'enlèveriez une grosse épine du pied, car je suis plongé dans VBA depuis 17h...

Bonsoir,

c'est sans doute très clair pour toi, moi j'ai pas compris ce que tu voulais.

si tu veux accéder au résultat d'une formule qui se trouve dans une cellule excel à partir de vba tu fais simplement référence au contenu de cette cellule.

exemple

si b2 contient ta formule

a= range("B2")

a contiendra le résultat de ta formule

sinon joins-nous un fichier avec ce que tu veux obtenir comme résultat, tes données de base et ce qu'il faut appliquer comme logique pour passer des données de base au résultat.

Bonsoir,

Pas très clair en effet, mais je pense que ce que cherche vega est une recherche de valeur cible :

https://forum.excel-pratique.com/excel/valeur-cible-et-macro-t48145.html

A+

Bonsoir,

En fait c'est l'inverse d'une valeur cible !

Non pas "quelle valeur de B1 donne B2=x ?", mais tout simplement "quelle valeur prend B2 pour B1=x ?", avec plusieurs valeurs de x.

Bonjour

La particularité ici est que B1 prend plusieurs valeurs successives, donc B2 aussi.

Pour reformuler, voici à quoi ressemble ma feuille (je ne peux pas vous l'envoyer, hélas) :

  • en colonne D, des valeurs que doit prendre B1
  • en colonne C, les valeurs successives que prendrait B2 pour les valeurs de la colonne D

Le problème avec Excel, c'est la mise à jour automatique des calculs, qui fait qu'on ne peux pas garder une valeur (sauf à faire un copier-coller spécial pour chaque cellule)... Avez-vous une solution simple à cela ?

Bonjour,

si tu devais le faire manuellement, quelle serait la séquence des actions excel que tu ferais ?

une fois cette séquence connue on pourrait l'automatiser.

Bonne question pédagogique. Manuellement ça donnerait :

  • copier la valeur de D1
  • coller en B1
  • copier la valeur résultante de B2
  • coller en C1, en tant que valeur seule
  • puis utiliser cette valeur pour la suite des calculs en E1, F1, etc.
  • recommencer avec D2 -> B1 puis B2 -> C2

... ceci réitéré 720 fois

... et pour une quarantaine de "fonctions" comme celle-ci

re-bonjour

donc si je comprends bien,

tu as 720 valeurs à mettre en B1. et tu veux mémoriser les résultats correspondant à ces 720 valeurs.

en pièce jointe une proposition avec en ligne 1 les 720 valeurs à tester et sous ces valeurs les 40 résultats pour tes formules où chaque nouvelle ligne reprend le résultat de la ligne précédente comme paramètre pour le calcul.

à toi d'adapter les formules en B2-B40 et des les recopier vers la droite.

24fonction.xlsx (95.01 Ko)

Si seulement c'était si simple. Mais j'ai précisé "je ne peux pas étendre les cellules B1 et B2", d'où ma question.

J'ai fait une feuille pour (essayer de) vous expliquer ce que je cherche à faire.

Les points d'interrogation correspondent à ce que je cherche. L'idée est que je ne peux pas copier toutes les cellules entrant dans le calcul de R1, R2, etc.

Une idée ?

re-Bonjour

j'ai essayé de comprendre ce que tu voulais sur base du fichier que tu as fourni, en ligne 6 tu mets une valeur T2 en colonne F, mais tu ne l'utilises pas dans tes formules.

Puisque tu veux une macro, je t'ai mis une macro qui mets les différentes valeurs de T en ligne 6 et copie le résultat trouvé en ligne 7, dans les cellules en sur la même ligne que la valeur T utilisée dans la formule. (mais il n'y a en fait pas besoin de macro pour cela).

Mais j'ai dû mal comprendre

En fait T2 est utilisée, mais via la fonction g(T) ! En F6, il y a "=B12".

Toute la question est là : comment utiliser les cases surlignées pour obtenir les valeurs de R1 et R2 en fonction des T1 et T2. Sachant, comme dans cet exemple, que les fonctions f(T) et g(T) dépendent de plein d'autres paramètres A, B, etc. (une douzaine) et que j'ai une quarantaine de telles fonctions.

Ce serait simple pourtant, une syntaxe du type "=VALEUR.POUR(T1 en A15 ; T en C6 ; R=f(T1) en C7)"...

PS : Tu as oublié ta pièces jointe ? Je ne la vois pas... Mais si je peux me passer de macro, tant mieux !

re-bonjour,

voici la pj,

je te confirme que dans l'exemple que tu as donné tu n'utilises pas T2 dans ta formule g(t), mais il s'agit sans doute d'une faute de frappe.

je te mets également la solution sans macro

Ben si, regarde F6=B12, comme dit... B12 est une des valeurs de T2.

Et comme dit aussi, il ne suffit pas de recopier la formule de g(T), elle ne fait pas appel à T2 directement, mais à une autre fonction, qui elle-même fait appel à une autre fonction... et la 10e fonction ainsi imbriquée utilise enfin T2. Les joies de la mécanique des fluides...

Je sais que c'est une utilisation très peu courante sous Excel, pourtant les fonctions c'est une base en sciences et techniques !

Merci d'essayer en tout cas.

re bonjour,

si tu peux m'indiquer dans quelle colonnes il faut copier les différentes valeurs de T1 et dans quelles colonnes il faut copier celles de T2, je pourrais peut-être t'aider.

l'idéal serait un classeur exemple dans lequel tu aurais déjà rempli ces infos.

Enfin, j'ai trouvé un début de solution !

Les "tables de données" font à peu près ce que je cherchais.

Ce tuto (en anglais) décrit toutes leurs possibilités : http://chandoo.org/wp/2010/05/06/data-tables-monte-carlo-simulations-in-excel-a-comprehensive-guide/

Il resterait à faire un RECHERCHEV ou une interpolation pour trouver le résultat correspondant à mes valeurs d'entrées successives.

Ça reste quand-même fastidieux, comparé à une simple fonction que j'appelais de mes vœux...

Rechercher des sujets similaires à "utiliser comme fonction"