Hello,
J'utilise le script suivant pour récupérer le nom de la procédure :
Source du code : [VBA-E] Recuperer le nom de la fonction en cours d'execution
MsgBox retourne donc "NomMacroActive"
J'ouvre ma feuille, je clique sur le bouton, et ça renvoie :
Erreur d'éxécution 91
Variable objet ou variable de bloc With non définie.
J'ouvre l'éditeur : je fais F8 sur la procédure, et ça fonctionne !
Je ferme l'éditeur, je clique sur le bouton, ça fonctionne !
Je ferme le classeur, le rouvre, je clique et .... Erreur 91 !!!
Ce GetSelection semble poser problème (c'est sur lui que s'ouvre l'éditeur quand je clique sur Débogage)
En creusant un peu : j'ouvre la feuille, je clique, ça plante.
J'ouvre l'éditeur VB, je clique, ça me donne le nom d'une procédure, mais pas forcément celle que je viens de lancer !
Il semblerait que le code renvoie en fait le nom de la procédure sur laquelle on se trouve dans l'éditeur.
Si l'éditeur n'a pas été lancé, ça ne marche pas, et si on n'est pas spécifiquement sur la macro en question, ça ne marche pas.
Une idée pour récupérer de manière fiable le nom de la procédure lancée ?
J'ai vu pas mal de choses sur le web, mais assez lourdingues ...
J'utilise le script suivant pour récupérer le nom de la procédure :
Code:
Sub NomMacroActive()
Dim i As Long
With Application.VBE.ActiveCodePane
.GetSelection i, 0, 0, 0
MsgBox .CodeModule.ProcOfLine(i, 0)
End With
End Sub
MsgBox retourne donc "NomMacroActive"
J'ouvre ma feuille, je clique sur le bouton, et ça renvoie :
Erreur d'éxécution 91
Variable objet ou variable de bloc With non définie.
J'ouvre l'éditeur : je fais F8 sur la procédure, et ça fonctionne !
Je ferme l'éditeur, je clique sur le bouton, ça fonctionne !
Je ferme le classeur, le rouvre, je clique et .... Erreur 91 !!!
Ce GetSelection semble poser problème (c'est sur lui que s'ouvre l'éditeur quand je clique sur Débogage)
En creusant un peu : j'ouvre la feuille, je clique, ça plante.
J'ouvre l'éditeur VB, je clique, ça me donne le nom d'une procédure, mais pas forcément celle que je viens de lancer !
Il semblerait que le code renvoie en fait le nom de la procédure sur laquelle on se trouve dans l'éditeur.
Si l'éditeur n'a pas été lancé, ça ne marche pas, et si on n'est pas spécifiquement sur la macro en question, ça ne marche pas.
Une idée pour récupérer de manière fiable le nom de la procédure lancée ?
J'ai vu pas mal de choses sur le web, mais assez lourdingues ...
Dernière édition: