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 :

ErrorHandler à placer dans macro principale ou sous-macro ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 32
    Par défaut ErrorHandler à placer dans macro principale ou sous-macro ?
    Bonjour à tous,

    Je veux mettre une petite gestion d'erreurs dans mon projet : une macro principale appelle plusieurs sous-macros (50-60 environs).
    La macro principale ne présente pas de problème, mais les sous-macros parfois.
    D'ou ma question : la séquence suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    On Error GoTo errorHandler
     
        'la procédure
         Exit Sub
     
    errorHandler:
        MsgBox Err.Description
    doit-elle être placée dans chaque sous-macro ou seulement dans la macro principale ? Mon but étant de lister les messages d'erreurs dans un dernier MsgBox ou bien dans un onglet.

    Merci pour votre aide !!
    Wyrgle

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Un peu de lecture ici !

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Si tu veux :
    Mon but étant de lister les messages d'erreurs dans un dernier MsgBox
    Alors il te faut une gestion d'erreur dans chaque sous-macro.
    Ces gestions d'erreur alimentent une variable publique MessageDerreur As String, comme ceci :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Dim MessageDerreur As String
     
    Sub Main()
       MessageDerreur = ""
       Call Macro1
       Call Macro2
       MsgBox MessageDerreur
    End Sub
     
    Sub Macro1()
    On Error GoTo errorHandler1
     
        'la procédure
         Exit Sub
     
    errorHandler1:
        MessageDerreur = MessageDerreur & vbCrlf & Err.Description
    End Sub
     
    Sub Macro2()
    On Error GoTo errorHandler2
     
        'la procédure
         Exit Sub
     
    errorHandler2:
        MessageDerreur = MessageDerreur & vbCrlf & Err.Description
    End Sub
    Tout en sachant bien que les erreurs doivent être évitées tant que de possible.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Tu peux gérer les erreurs dans la procédure appelante, c'est son gestionnaire qui va gérer les erreurs produites dans les procédures appelées :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Sub Test()
     
       Dim Retour As Double
       Dim Message As String
     
        On Error Resume Next
     
        Retour = Fonction1(10)
        If Err.Number <> 0 Then Message = "Erreur dans la fonction 'Fonction1()' :" & vbCrLf & Err.Description & vbCrLf & vbCrLf
     
        Porcedure1
        If Err.Number <> 0 Then Message = Message & "Erreur dans la procédure 'Porcedure1()' :" & vbCrLf & Err.Description & vbCrLf & vbCrLf
     
        'etc...
     
        MsgBox Message
     
    End Sub
     
    Function Fonction1(Valeur As Double) As Double
     
        Fonction1 = Valeur / 0
     
    End Function
     
    Sub Porcedure1()
     
        Dim Fe As Worksheet
        Set Fe = Worksheets("Feuille qui n'existe pas")
     
    End Sub
    Effectivement, si tu doit gérer des erreurs d'une façon particulière afin de définir les actions à faire en fonction des erreurs produites, il est préférable d'avoir le gestionnaire dans la Sub ou Fonction appelée car si il est dans la procédure appelante, à la première erreur rencontrée, la Sub ou Fonction retourne l'erreur au gestionnaire de la procédure appelante sans aller plus loin dans son code

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une discussion récente sur la gestion d'erreur, et la possibilité d'en imbriquer plusieurs mais avec un comportement à bien maîtriser

    https://www.developpez.net/forums/d1...o/#post9083400

Discussions similaires

  1. [XL-2016] Macro d'impression fonctionnant dans VBE, mais partiellement sous EXCEL
    Par Rognon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/04/2017, 13h41
  2. [Toutes versions] Appel d'une sous macro dans une macro
    Par Progaccess76 dans le forum Macros Access
    Réponses: 20
    Dernier message: 02/09/2016, 20h46
  3. [XL-2010] Copie sous macro dans feuilles différentes
    Par Blaiz58 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/09/2014, 18h20
  4. [XL-2007] Pointer vers une partie d'une macro principale dans un userform
    Par octane dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/12/2011, 20h26
  5. execution d'une macro d'access sous delphi
    Par galendor_d'ambre dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/02/2004, 15h58

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