IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Faire référence au nom d'une procédure Sub


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut Faire référence au nom d'une procédure Sub
    Bonjour,

    J'ai besoin, à l'intérieur d'une procédure, de faire référence au nom de cette procédure (sub ou function) ; existe-t-il un mot clé, une méthode qui permette cette fonctionnalité?

    J'ai besoin de cette fonctionnalité pour mon code de gestion d'erreur...

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 133
    Par défaut hélas
    sous vba il n'existe pas de référence procédure ou fonction avec l'objet Err

    Pour ma part je déclare une variable global disons gErrSubFunction de type string.

    Et à la procédure de gestion d'erreur je récupére la valeur de la variable gErrSubFunction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Function Nom1()
         gErrSubFunction="Function Nom1()"
         on error goto GestionErr
     
    GestionErr:
         appel de la gestion de l'erreur 
     
    End Function
     
     
    Sub Nom2()
         gErrSubFunction="Sub Nom2()"
         on error goto GestionErr
     
    GestionErr:
         appel de la gestion de l'erreur 
     
    End Sub

    Voilà comment je procède

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut CC25 et le forum
    J'ai besoin de cette fonctionnalité pour mon code de gestion d'erreur...
    C'est pour une gestion globale de toutes les erreurs de toutes tes macros ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Gestion_des_erreurs
    renverra à la procédure Sub Gestion_des_erreurs.
    Mais si tu expliquais ce que tu veux faire réellement, on pourrait t'aider.
    A+

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut
    Merci pour les réponses.

    Ce que je veux faire : indiquer, de manière automatisée (sans avoir à l'écrire en dur) dans mon code de gestion d'erreur de mes procédures, le nom de la procédure concernée par l'erreur, afin de simplifier le débogage en cas d'erreur.
    Actuellement, voilà à quoi ressemble mon code de gestion d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Ma_Procedure_Qui_Fonctionne()
    On Error GoTo Gest_Erreur
     
    code
     
    Exit_Gest_Erreur:
        Exit Sub
    Gest_Erreur:
        MsgBox "Ma_Procedure_Qui_Fonctionne : " & Err.Description & " - N°:" & Err.Number
        Resume Exit_Gest_Erreur
    End Sub
    Je souhaiterais automatiser la partie MsgBox "Ma_Procedure_qui_Fonctionne :"
    en récupérant le nom de la procèdure dans laquelle je me trouve... si c'est possible, bien sûr.

    J'espère avoir été plus clair cette fois.

    @+

  5. #5
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 133
    Par défaut Gestion des erreurs
    Bonjour,

    La gestion des erreurs sous vba est limité comme je l'ai dit dans mon dernier message
    il n'est pas possible de récuperer la fonction ou la procédure qui a déclenche l'erreur !

    Sauf si on declare une variable global à mettre dans le debut de la fonction ou de la procédure !!!!

    Sinon regarde l'aide tu verras bien que c'est limité .


  6. #6
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Par défaut
    il n'est pas utile de faire une procédure ou une fonction pour trouver l'erreur alors que le débogeur existe

  7. #7
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Citation Envoyé par garion28 Voir le message
    il n'est pas utile de faire une procédure ou une fonction pour trouver l'erreur alors que le débogeur existe
    Sauf si on veux faire de la gestion d'erreur un peu avancé qui corrige les erreurs prévisible. Une variable mal renseigné par l'utilisateur un calcul qui ne converge pas correctement (ca même vers l'optimisation ca, mais en VBA faut avoir le temps )
    Ou alors ce la permet simplement d'éviter que l'utilisateur lambda vienne mettre son nez dans le code
    Bon après la ou tu as raison c'est que cela ne semble vraiment pas être le cas


    Sinon pour avoir exactement la position de l'erreur tu peux utiliser la fonction ERL (un peu lourd a mettre en place mais on peux automatisé)
    En ayant le numéro de ligne de l'erreur si tu as numéroté les ligne de tes procédure a la suite tu pourra repérer la procédure en questions

    Esemple procédure 1 numéroté de 1000 a 1999 la deuxième de 2000 à 2999
    , etc.

    Dans ta gestion d'erreure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox "l'erreur a eu lieu dans la procédure : " & left(cstr(Erl()),1)

    La faq sur la fonction ERL avec un lien pour numéroté les ligne (je ne sais aps comment fonctionne l'outil)

Discussions similaires

  1. appel de fonctions pour faire calculs dans une procédure sub
    Par panda78 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 09/08/2012, 18h14
  2. [XL-2003] Référence au nom d'une procédure / fonction
    Par laurentabj dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2009, 15h55
  3. Réponses: 14
    Dernier message: 14/01/2009, 15h59
  4. Réponses: 4
    Dernier message: 28/08/2006, 13h04
  5. Retour du nom d'une procédure
    Par DFoze dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/06/2006, 22h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo