Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

doume095

XLDnaute Nouveau
Bonjour,
J'ai cherché partout sur les forum Excel le moyen, alors que je suis dans une procédure ou une fonction, de connaitre son nom et celui de la procédure/fonction appelante. Aucun forum à propos du VBA Excel que j'ai pu consulter n'aborde ce sujet de façon complète et satisfaisante. Je ne souhaite pas de solution de contournement, style passage de paramètre ou autre. Le moyen d'accéder à ces deux informations existe-t-il sous Excel (variable, propriété, ...) ? Quelqu'un a-t-il été confronté avec succès à cette problématique ?
Merci d'avance pour votre aide
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonjour BrunoM45,
Merci de t'intéresser à ma problématique. J'ai un formulaire avec pleins de boutons qui appellent chacun une fonction dont le nom reflète la nature du traitement à effectuer. Chacune de ces fonctions enchaine sur une fonction générique qui doit faire un traitement selon la fonction d'appel. Je dois donc connaître le nom de la fonction appelante pour différencier le traitement à effectuer.
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Re,

Avec
Code:
Application.Caller
Tu peux obtenir le nom du bouton appelant

Mais ta fonction générique, il suffit de l'appeler avec le nom de la fonction qui la lance 😕
Code:
Rep = MaFonctionGénérique("Toto")
Et ta fonction générique
Code:
Function MaFonctionGénérique(sNom as string)
msgbox sNom
End Function

J'ai l'impression de ne pas avoir tout compris 😛

A+
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonjour doume, Bruno, 🙂

Visiblement ce que tu cherches se trouve dans la fenêtre pile des appels
En faisant une recherche, j'ai cru comprendre qu'à travers une API (StackWalk) certains étaient parvenus à le réaliser dans d'autres langages, mais pas trouvé d'exemple en VB ou VBA, et ça a l'air pour le moins costaud...
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonsoir.

Non mais là d'après l'explication du #3 ça va se résoudre aisément par passage de paramètres. Ce ne sont pas des noms de procédures ni de boutons qu'il faut transmettre mais des consignes d'exécutions et peut être les objets cibles et source concernés !
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonjour.

Cela dit le demandeur parle de formulaire. Il ne s'agit peut être pas d'un UserForm ni de boutons de commande, mais de boutons de formulaire auxquels est affectée une même macro. Dans ce cas précis uniquement Application.Caller donne le nom du Shape qui l'a invoquée.
 
Dernière édition:
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonjour à tous,

Tout d'abord, merci pour toutes ces idées pour solutionner mon problème.

Bruno,
La solution "Application.caller" est une excellente piste à laquelle j'avais pensé. Je souhaitais juste une solution encore plus générale qui s'appliquerait même si les appels multiples n'étaient pas issus de bontons de formulaires, histoire de savoir comment récupérer les infos cherchées et de les appliquer dans d'autres cas de figures.
Comme je te l'ai dit, je ne souhaite pas utiliser la notion de paramètre pour solutionner mon problème.

Modeste geedee,
J'ai récupéré le zip issu du lien que tu m'as transmis. Je ne vois pas du tout comment l'utiliser, donc s'il répond à ma question. Peut-être peux tu détailler un peu ce qu'il contient, ou extraire la partie pertinente liée à ma question ?

tototiti2008,
L'idée qu'il existe une API (StackWalk) réalisant cela est séduisante, malheureusement, je n'ai rien trouvé pour expliciter cela. Si quelqu'un a des infos sur cette API et peut partager avec nous, ce serait merveilleux.

J'ai conscience que la question semble compliquée. J'ai en effet fait de nombreuses recherches sur différents forums avant d'écrire mon post, faute de succès. Il semble que la question reste ouverte... Je suis tout de même étonné que des infos aussi basiques soient aussi difficiles d'accès, et que personne n'aie cherché à savoir comment les récupérer. Je continue à chercher...
Et encore merci à tous pour vos premiers éléments de réponses
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonjour doume095

Je suis tout de même étonné que des infos aussi basiques soient aussi difficiles d'accès, et que personne n'aie cherché à savoir comment les récupérer.
Il faut dire que le problème est posé plus que succinctement et que nous n'avons même pas une bride de fichier pour mieux comprendre 😛🙄

Même si Tototiti2008 qui lui à sa boule de cristal, semble avoir trouvé le nœud du problème 😕

A+
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Comme je te l'ai dit, je ne souhaite pas utiliser la notion de paramètre pour solutionner mon problème.
Ça c'est un très très grand tort. C'est la seule solution raisonnable pour régler le genre de problème exposé au #3.
Toute autre serait absurde.
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonsoir à tous,

J'ai lu en diagonales quelques fils en anglais sur StackWalk, visiblement certains mettaient qu'ils allaient essayer de l'utiliser pour VBA mais jamais aucun retour après ça, une API visiblement très mal documentée.
Moi je programme pas les API sans le moindre code les utilisant, pas encore en tout cas... ça semble un gros boulot en perspective pour quelque chose qu'on peut faire soit :
- en passant un paramètre comme proposé par Bruno
- en gérant une variable globale stockant le nom des derniers appelants/appelés
Sans doute moins pur du point de vue programmation que d'interroger d'obscures API mais tellement plus simple
VBA n'est ni le plus récent, ni le plus évolué des langages de programmation, pas étonné outre mesure de cette absence pour ma part
 
Re : Connaitre le nom d'une procédure/fonction et de sa fonction/procédure appelante

Bonsour®
J'ai cherché partout le moyen, alors que je suis dans une procédure ou une fonction, de connaitre son nom et celui de la procédure/fonction appelante.

Heu ... ???
si tu es l'auteur de l'application , ces informations sont l'architecture nécessaires à la réalisation.
boutons qui appellent chacun une fonction dont le nom reflète la nature du traitement à effectuer.

si tu n'es pas l'auteur, l'analyse du programme te dira les relations et fonctionnalités de chaque composant
(c'est ce qu'était sensé réaliser sous forme hiérarchique, le programme de Stephen Bullen cité dans le lien proposé)

c'est une étape dans ce qui est communément nommé : reverse Engineering
Il s'agit de :
comprendre le fonctionnement de l'objet, pour être en mesure de l'utiliser correctement, de le modifier, ou encore de s'assurer de son bon fonctionnement1 ;
fabriquer une copie de cet objet alors qu'on ne peut en obtenir ni les plans ni les méthodes de fabrication (activité généralement illégale) ;
créer un nouvel objet ayant des fonctionnalités identiques à l'objet de départ, sans viol de brevet ;
analyser un objet produit par un concurrent, soit dans le cadre d'une activité de veille concurrentielle, soit pour détecter d'éventuelles violations de brevets.

pour rester plus terre à terre, Excel est avant tout un tableur
certes accompagné d'un langage de programmation restreint orienté application MS (VBA) qui est un sous-ensemble du langage VB.

Les API sont des composantes du système Windows qui sont en parties décrites dans la documentation VB
et comme le signale TotoTiti2008 : 🙄
et ça a l'air pour le moins costaud...

si tu veux connaitre tout les liens et appels entre l'appli, l'interface et Windows
même en te mettant à VB cela soit un peut juste ...🙄
peut être penser alors à C++ ...
🙄
Bonne continuation
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour