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 :

Rapport d'erreur VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut Rapport d'erreur VBA
    Bonjour à tous,

    J'ai créé un programme en Vba destiné à être utilisé par des personnes qui seront amenées à être expatriées, je le suis moi-même.
    Existe-t-il la possibilité de générer un rapport d'erreur qui puisse être envoyé par mail lorsque la macro "plante" du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    On error go to
    Code pour impression d'écran ou pour aller chercher un rapport
    Cette fonction me permettrait de pouvoir dépanner mes collègues à distance.

    Je sais comment réaliser un mail depuis Excel en Vba, mais pour générer ou rechercher un rapport d'erreur là je sèche.
    Merci pour votre aide et vos conseil
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  2. #2
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Bonjour,

    Je vous propose un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
     
    On Error GoTo plantage
     
    Sheets("Liste").Select 'si la feuille liste n'existe pas alors erreur dans ce cas le message "erreur" apparait sinon le message "ok" apparait
    MsgBox "ok"
    Exit Sub
    plantage: MsgBox "erreur"
     
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ce n'est pas si simple que cela, il y a beaucoup de choses à mettre en place dans chaque procédure, etc...

    Voici un aperçu de ce qu'il est possible de faire sous Access, et adaptable à Excel car la gestion des erreurs est semblable: http://warin.developpez.com/access/erreur/tutoriel1/

    Philippe

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans ta question, il y a plusieurs questions!

    d'abord, ta macro plante pour des raisons environnemental (pas d'accès réseau!...) , ou des bug de programmation non évalués dès le début?

    il y à t'il des bug pénalisant interdisant la continuité de la macro ou la macro peut elle continué? en d'autre terme y a t il des niveaux d’incidence (minime, moyen,majeur)?

    ce qui va influé sur la quantité d'information à retourné dans ton Mail. il serait dommage d’arrêté le traitement même pour une dizaine de bug ci ceux-ci non aucune incidence sur le résultat du traitement.
    en revanche rendre un traitement biscornue!!!!!

    je te suggère de traiter les message dans une sub indépendante pour ne pas réécrire du code inutilement redondant ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sub MessageErreur( Err.description , Module,Methode)

  5. #5
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Robert,
    Il peut y avoir des bugs liés à l'environnement ( version d'Excel par exemple), cellules effacées par mégarde (pour cela j'ai tenté de protéger mes feuilles mais certaines données ne peuvent pas être protégées sous peine de plantage de Vba)
    To modify a protected cell or chart, first remove protection using the Unprotect Sheet command
    Il peut y avoir également des erreurs dues à des conditions spécifiques non testées lors de l'écriture du code, j'en ai repéré quelques unes que j'ai corrigés ou prise en compte mais je ne suis pas infaillible.
    Si il y a des bug, effectivement le traitement ne pourra pas se poursuivre, d'où la nécessité pour moi de pouvoir intervenir rapidement.
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  6. #6
    Invité
    Invité(e)
    Par défaut
    je préconiserais donc le traitement de vinc_bilb

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Brut de fonderie, je dirais que c'est possible, avec par exemple un trame du style (non testée):

    1. Vous déclarez une Variable publique de log des erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public ErrLog As String
    2. Vous récupérez pour chaque procédure la description des erreurs si il y en a (test sur Err.Number) et leur numéro, du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Err.Number <> 0 Then
       ErrLog = ErrLog & Err.Number & vbTab & Err.Description & vbTab & ProcName  & vbCrlf 'Nom de la procédure appelelante
       Err.Clear 'RAZ des erreurs
    End If
    3. En sortie du workbook (event), par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Workbook_BeforeClose
    Vous testez si ErrLog est vide, sinon, vous envoyez par email du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If ErrLog <> vbNullString Then
       ErrLog = "Report of errors by " & Application.UserName & vbClrf & String(40, "=") & vbCrlf & ErrLog
       Call EmailErr(ErrLog, ....)
       ErrLog = vbNullString
    End If
    avec par exemple
    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
    33
    34
    35
    36
     
    Sub EmailErr(ErrLog As String)
        Subname = "EmailErr"
     
        Dim Msganswer As String, Msgprompt As String
        Dim Mailsubj As String, Msbd As String, Emailadd As Variant, tolist As String, cclist As String
        Dim Sentwbkfullname       As String, Extrwbkfullname As String, Hlinkaddr As String
        Dim oOApp, oOMail, olMailItem
     
        Mailsubj = "Error report: " & ThisWorkbook.Name & " (" & Format(DateValue(Now()), "dd-mmm-yy") & ")"
     
    'Building Message head
        Hlinkaddr = ThisWorkbook.FullNameURLEncoded
     
        Msbd = "<p>" & ErrLog & </a> </p>"
        Msbd = Msbd & " <p>From master file: " & Wbk.Name & "</b> </p>"
        Msbd = Msbd & "<p> Extract File: <a href=" & "'" & Hlinkaddr & "'> " & " " & ThisWorkbook.Name & "</a> </p>"
        Msbd = Msbd & "<p> Directory   : <a href=" & "'" & ThisWorkbook.Path & "'> " & " " & ThisWorkbook.Path & "</a> </p>"
        Msbd = Msbd & "<p><tr>"
        Msbd = Msbd & " (Automatic email notification)"
     
    'Sending Mail
        Set oOApp = CreateObject("Outlook.Application")
        Set oOMail = oOApp.CreateItem(olMailItem)
     
        With oOMail
            .To = tolist
            .CC = cclist
            .Subject = Mailsubj
            .HTMLBody = Msbd
    '        .Attachments.Add Wbk.FullName
    '        .Save
            .Display
        End With
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/06/2006, 16h39
  2. erreur VBA dans un recordset
    Par rapace dans le forum Access
    Réponses: 4
    Dernier message: 12/10/2005, 15h52
  3. Question Basique Gestion Erreur VBA ...
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h42
  4. Rapport d'erreurs Windows
    Par SteelBox dans le forum Windows
    Réponses: 12
    Dernier message: 22/08/2005, 17h34
  5. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13

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