EXCEL VBA nom de la macro en cours

  • Initiateur de la discussion Initiateur de la discussion pascal_bidouille
  • Date de début Date de début

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 !

P

pascal_bidouille

Guest
Salut,

Existe-t-il un moyen en VBA pour :
- récupérer le nom de la macro en cours d'exécution
- dans une fonction récupérer le nom de la macro appelante

Merci pour votre aide
 
Re : EXCEL VBA nom de la macro en cours

Bonjour, pascal_bidouille, le Forum,

Comme ceci ?

Code:
Option Explicit
Sub Quel_est_le_nom_de_la_macro()
    [a4] = "Bonjour !"
    MsgBox "Quel_est_le_nom_de_la_macro", vbInformation, "Code appelé :"
End Sub

A bientôt 🙂
 
Re : EXCEL VBA nom de la macro en cours

Bonjour.

Mon intuition me dit que techniquement c'est forcément possible, puisque VBA est bien capable de restituer ces informations lors d'un débogage, lorsqu'on demande à examiner la pile. Il est même capable de retrouver dynamiquement des noms de méthodes et de propriétés simplement à partir d'une adresse pointant sur un objet de nature complètement inconnue au moment de la compilation. Tous ces noms sont donc bien rangés dans le code selon des règles précises. Mais je ne connais pas encore de moyen permettant d'extraire ces informations comme le fait VBA.

Application.Caller permet simplement de retrouver la plage ou le nom d'un shape d'où est invoquée une procédure.

Mais, à tout hasard, pourquoi voudriez cela ? Des fois qu'on puisse appliquer le principe dénoncé par Coluche: "Dites nous ce dont vous avez besoin: on expliquera comment vous en passer !"
 
Re : EXCEL VBA nom de la macro en cours

Bonsour®
une méthode plutôt "bourrin"...😱
dans chaque proc : ajouter une variable locale contenant le nom de la proc
utiliser ensuite cette variable selon besoin...

exemple :
VB:
Sub toto()
Dim currentproc$
currentproc = "Toto"
Call AffProc(currentproc)
Call toto2
Call toto4
Call AffProc(currentproc)
End Sub
'-------------------------
Sub toto2()
Dim currentproc$
currentproc = "Toto2"
Call AffProc(currentproc)
Call toto3
End Sub
'------------------------
Sub toto3()
Dim currentproc$
currentproc = "Toto3"
Call AffProc(currentproc)
End Sub
'------------------------
Sub toto4()
Dim currentproc$
currentproc = "Toto4"
Call AffProc(currentproc)
Call toto2
Call toto3
Call AffProc(currentproc)
End Sub
'-----------------------
Sub AffProc(message)
MsgBox message, vbInformation, "procedure active"
' ou bien
'Application.Wait Now + TimeValue("0:00:01")
'Application.StatusBar = message
End Sub
 
Re : EXCEL VBA nom de la macro en cours

Hello,

Merci pour vos réponses. Visiblement cela n'a pas l'air si facile...

Comme le dit Dranreb je serai surpris qu'il n'y ai pas moyen de retrouver l'information mais bon.

En fait j'ai un fichier avec pas mal de macro (une bonne 40aine), étant plutôt fainéant, je voulais écrire une macro commune qui serait exécutée en cas d'erreur et fasse quelques checks et log des informations dont le nom de la macro ayant planté.
Ainsi je peux récupérer des informations de débug sans que l'utilisateur n'ai à rentrer en mode débug et aussi en évitant de me taper un code similaire pour toutes les macros.
Effectivement comme suggéré par Modeste, je peux utiliser une variable, cela peut faire l'affaire.

Dans la même idée est-il possible de faire un "dump" de toutes les variables d'une macro (du type ce que m'on trouve dans la fenêtre variables locales du débug) ?
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
170
  • Question Question
Microsoft 365 Rechercher date
Réponses
5
Affichages
226
D
  • Question Question
Réponses
5
Affichages
250
Didierpasdoué
D
Retour