EXCEL VBA nom de la macro en cours

pascal_bidouille

XLDnaute Junior
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
 

DoubleZero

XLDnaute Barbatruc
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 :)
 

Dranreb

XLDnaute Barbatruc
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 !"
 

Modeste geedee

XLDnaute Barbatruc
Re : EXCEL VBA nom de la macro en cours

Bonsour®
une méthode plutôt "bourrin"...:eek:
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
 

pascal_bidouille

XLDnaute Junior
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) ?
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 609
dernier inscrit
AmineAB33