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 :

on error resume next et on error go to, différence?


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Par défaut on error resume next et on error go to, différence?
    Bonjour,

    Je comprends pas bien la différence de ces deux instructions.
    Dans un cas comme dans l'autre il ne traite pas les lignes entre,non? pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On error resume next ' On désactive la gestion des erreur
    ...
    On Error GoTo 0       ' On réactive la gestion des erreurs
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On error Go to traitement_erreur
    .. 
    traitement_erreur :
    de plus avec On error resume next, on peut aussi traiter l'erreure, non?
    avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    iIf Err.Number > 0 Then .... 
    err.clear
    End If.
    Dans quel cas utiliser l'un ou l'autre?
    A part pour la gestion des fichiers,dossiers, division par 0, dans quel cas utiliser la gestion des erreurs, par exemple?

    NAth

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 006
    Par défaut
    Salut

    Le ne doit être utilisé que dans 2 cas a mon avis,
    1er cas, si tu veux faire la gestion ponctuel d'une erreur, un division qui risque de contenir 0, dans ce cas l'erreur ne génèrera pas de message et tu pourra la récupérer en gérant la valeur de 2eme cas, si tu es sur que ton code est bien rodé, que tu souhaite le distribuer, mais que tu ne souhaite pas que l'utilisateur tombe sur un message lui proposant le debugage en cas de survenu d'une erreur que tu n'aurais pas géré. L'avantage réside lorsque les utilisateur ne sont pas capable d'interpréter ce type de message, ils ne sont donc pas perturbé par sont apparition. Mais attention car le très très gros risque c'est que les résultat de ton code soient totalement faux et que personne ne s'en rende compte.... Il faut donc utiliser le goto resume next avec discernement.

    Dans le cas on ton application est utiliser par des profane et que tu ne souhaite justement pas que le message lié au debugage s'affiche, tu as la possibilité lorsqu'une erreur survient de dirigé ton code vers un point particulier de ton code, c'est le cas ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    On error Goto traitement_erreur
    .. 
    Exit sub
    traitement_erreur :
    Ne pas oublier le Exit sub/function qui permet de ne pas traiter ce code arrivé a la fin de ta procédure.
    a la suite de traitement_erreur : tu pourras au besoin afficher un message de ton cru en function encore une fois du numéro d'erreur, avec une explication claire de ce que doit faire l'utilisateur, le prévenant par exemple qu'une erreur inconnu est apparu et qu'il doit te contacter avec le numéro 'erreur que tu ajoute dans ton message, voir l'aide excel je crois qu'il y a des exemple.

    Le code qui suit traitement_erreur est generique a toutes les erreur, mais tu pourra faire evolué se code avec un select case ou des if,elseif,else en fonction de err.number.

    La gestion d'erreur est souvent négligé (ça m'arrive souvent aussi) et c'est une erreur justement, on voit souvent sur le fofo des gens novices qui attaquent leur code par "On erro goto next" et ensuite ils ne comprennent pas pourquoi le code ne fait pas ce qu'ils veulent... sans aucun message d'alerte ni gestion d'erreur c'est évident.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Par défaut
    ok merci, je commence à mieux comprendre...mais pas tout à fait encore

    mais une question encore, faut-il employer le Err.clear avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    On error Goto traitement_erreur
    .. 
    Exit sub
    traitement_erreur :
    mais bon si on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    On error resume next
    x = y/ 0
    if err.number > 0 then
    ...
    end if
    cela revient au meme, un peu que d'utiliser le on error resume next? non?
    ou est-ce que la différence est que dans ce cas, on peut avoir un msg d'erreur, puis le code qui continue de s'éxecuter, tandis qu'avec le on error goto traitement_erreur le code s'arrête net?

    En fait le on error goto, sert simplemet à informer l'utilisateur avec un langage un peu moins barbare qu'il y'a un problème et l'empêcher de pouvoir débuguer?

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 006
    Par défaut
    Dans un cas réduis comme tu le propose, oui le code serait similaire, mais il faut voir a une échelle plus importante avec plusieurs situation qui risque de generer des erreurs, dans un tel cas plutôt que de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    on error resume next
    ...
    on error  goto 0
    a chaque fois, il sera préférable de gerer tous les types d'erreurs que pourrait générer ton code en utilisant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on error goto traitement_erreur
    en tout debut de code.

    Ne pas oublié dans la section protegé en bas d'utiliser resume next pour que le code continu a l'endroit ou il c'est arrête si telle est ta volonté bien sur.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut Suite du on error go to
    Bonsoir Qwazerty
    j'ai lu ce post très clair et je me pose une question (ne riez pas): si je veux router comme tu proposes vers un traitement_erreur en cas d'erreur, qui consiste à alerter par une msgbox avec deux instructions stop ou encore, comment je peux retourner à l'éxécution du programme une fois le message lu (bouton ok = encore) ?

    Merci bcp!

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,
    Citation Envoyé par Polygos Voir le message
    j'ai lu ce post très clair et je me pose une question (ne riez pas): si je veux router comme tu proposes vers un traitement_erreur en cas d'erreur, qui consiste à alerter par une msgbox avec deux instructions stop ou encore, comment je peux retourner à l'éxécution du programme une fois le message lu (bouton ok = encore)
    L'instruction qui permet de reprendre là où l'erreur s'est produit est Resume

    Je voudrais préciser qu'il ne faut utiliser la gestion d'erreur que si on ne peut pas éviter qu'elles se produisent avec une gestion en amont.

  7. #7
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,

    L'instruction qui permet de reprendre là où l'erreur s'est produit est Resume

    Je voudrais préciser qu'il ne faut utiliser la gestion d'erreur que si on ne peut pas éviter qu'elles se produisent avec une gestion en amont.
    Bonjour Patrice
    Cette fois l'erreur m'es très utile.
    Il s'agit d'un transfert de photos d'un répertoire à un autre.
    Dons si une photo attentue n'est pas trouvée, je voudrais voir le message qui me l'identifie, car ce cas doit être rare (ce peut être aussi car son format en png n'est pas le jpg attendu, etc.) d'où le besoin d'identifier l'arrêt et de route vers une simple box qui m'indique l'article dont la photo n'est pas conforme.

    Quelqu'un peut il m'apprendre ?

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Citation Envoyé par Polygos Voir le message
    Il s'agit d'un transfert de photos d'un répertoire à un autre.
    Dons si une photo attentue n'est pas trouvée, je voudrais voir le message qui me l'identifie, car ce cas doit être rare (ce peut être aussi car son format en png n'est pas le jpg attendu, etc.) d'où le besoin d'identifier l'arrêt et de route vers une simple box qui m'indique l'article dont la photo n'est pas conforme.
    Comme je t'ai dit, il ne faut pas attendre que l'erreur se produise pour la gérer !
    Il faut anticiper en vérifiant que le fichier existe avant d'essayer de le transférer. Pour ça il y a Dir().

  9. #9
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Comme je t'ai dit, il ne faut pas attendre que l'erreur se produise pour la gérer !
    Il faut anticiper en vérifiant que le fichier existe avant d'essayer de le transférer. Pour ça il y a Dir().
    Merci de l'info, mais dans le processus de mon code, faire ressortir l'erreur est bien plus systématique pour moi.


    Si je veux controler la présence du fichier avant de le déplacer alors j'écris le test présence photo qui doit m'alerter

    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
    For i = PL To DL
     
        If ws1.Cells(i, 122) > 0 Then 'condition de base)
     
     
    'Chemin de stockage de la photo DN, détourée, recadrée,
     
        chemin = Cells(i, 63).Value
     
    'Test présence photo: En cellule59, le nom du fichier photo, xxx.jpg
        rep = Dir("chemin" & Cells(i, 59).Value)
        If rep = "" Then
        MsgBox (cells(i,59&"photo absente")
        Else
        End If
     
     
        nouveauchemin = "\\Station-serveur\MAISON DELAHAYE\PHOTOS & FT FOURNISSEURS\..PHOTOS DU SITE\PHOTOS PRIMAIRES\DN CENTRALISEES\"
     
     
        Dim Fso As Object
        Set Fso = CreateObject("scripting.filesystemobject")
        Fso.Copyfile chemin, "\\Station-serveur\MAISON DELAHAYE\PHOTOS & FT FOURNISSEURS\..PHOTOS DU SITE\PHOTOS PRIMAIRES\DN CENTRALISEES\", Overwrite
     
     
         Else
     
         End If
     
     
    Next i
     
    End Sub
    C'est correct ?

  10. #10
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Citation Envoyé par Polygos Voir le message
    Tan pis si tu ne veux pas me répondre, merci quand même.
    ?????????????? J'ai répondu à toutes tes dernières questions !!!!

    Si tu veux une solution sous forme VBA, il faut le publier ton code en précisant où est le problème !

  11. #11
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 560
    Par défaut
    bonjour
    le on error resume next oblige le développeur à gérer toute les ligne de code
    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
     
    On Error Resume Next
    Instruction1
    if Err then
     msgbox Err.description
     Err.clear
    end if
    Instruction2
    if Err then
     msgbox Err.description
     Err.clear
    end if
    Instruction3
    if Err then
     msgbox Err.description
     Err.clear
    end if
    On Error Goto 0
    On Error Goto permet de centralise la gestion des Erreur!
    le code suivant fait la même chose que le code précédant!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    On Error goto Erreur
    Instruction1
    Instruction2
    Instruction3
    goto Fin
    Erreur:
     msgbox Err.description
     Err.clear
    resume next
    FIn:
    On Error Goto 0
    dans d'autre langage on parle d'exception!
    la gestion des exception doit resté exceptionnelle!
    tous les cas susceptible de générer des erreur doivent être évalué systématiquement!

  12. #12
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,
    Citation Envoyé par Thumb down Voir le message
    le code suivant fait la même chose que le code précédant!
    Eh bien Non, car il ne permet pas de savoir laquelle des 3 instructions à généré l'erreur.

    D'autre part ces 2 exemples ne traitent pas l'erreur, il se contentent de prévenir et de l'ignorer.
    Un bon traitement d'erreur n'utilise pas Resume next, il choisit entre Resume et End.

    Il est fréquent d'utiliser On Error Resume Next pour une instruction particulière suivi de On Error Goto 0 pour laisser la possibilité à une erreur de se produire.
    Dans la très grande majorité des cas, il n'y a pas d'analyse, on suppose que l'erreur qui s'est produite est celle à laquelle on s'attendait ce qui parfois entraine des comportements inattendus.

  13. #13
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Re,

    Citation Envoyé par Polygos Voir le message
    C'est correct ?
    Il faut éviter de mettre dans les boucles les instructions qui ne doivent être exécutée qu'une fois :
    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
    Option Explicit
    Sub test()
    Dim ws1 As Worksheet
    Dim PL As Long, DL As Long, i As Long
    Dim Fso As Object
    Dim msg As String
    Dim cheminSource As String
    Dim cheminCible As String
    Dim nomFichier As String
     
      '....
      '
      Set Fso = CreateObject("scripting.filesystemobject")
      cheminCible = "\\Station-serveur\MAISON DELAHAYE\PHOTOS & FT FOURNISSEURS\..PHOTOS DU SITE\PHOTOS PRIMAIRES\DN CENTRALISEES\"
      For i = PL To DL
        If ws1.Cells(i, 122) > 0 Then 'condition de base)
          'Chemin de stockage de la photo DN, détourée, recadrée,
          cheminSource = Cells(i, 63).Value
          nomFichier = Cells(i, 59).Value
          'Test présence photo: En cellule59, le nom du fichier photo, xxx.jpg
          If Dir(cheminSource & nom) = "" Then
            msg = msg & vbCrLf & "- " & nomFichier
          Else
            Fso.Copyfile cheminSource & nomFichier, cheminCible & nomFichier, True
          End If
        End If
      Next i
      If msg > "" Then MsgBox "Photo(s) absente(s) :" & msg, vbCritical
     
    End Sub

  14. #14
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A toutes fins utiles, je signale qu'il existe sur Developpez.com, une multitude de tutoriels très complets.
    Je conseille donc la lecture de La gestion des erreurs dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  15. #15
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 560
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,

    Eh bien Non, car il ne permet pas de savoir laquelle des 3 instructions à généré l'erreur.

    D'autre part ces 2 exemples ne traitent pas l'erreur, il se contentent de prévenir et de l'ignorer.
    Un bon traitement d'erreur n'utilise pas Resume next, il choisit entre Resume et End.

    Il est fréquent d'utiliser On Error Resume Next pour une instruction particulière suivi de On Error Goto 0 pour laisser la possibilité à une erreur de se produire.
    Dans la très grande majorité des cas, il n'y a pas d'analyse, on suppose que l'erreur qui s'est produite est celle à laquelle on s'attendait ce qui parfois entraine des comportements inattendus.
    Bonjour,
    Je n'avais pas l'intention définir une gestion parfaite des erreurs.
    Les deux exemples font exectement la même chose c'est à dire rien ce qui est généralement le cas dans la gestion des erreurs !

    Il est possible de numéroter les lignes et loguer dans un fichier l'erreur et le Nº de ligne.

    La gestion des erreurs est et doit rester exceptionnel, comme je le disais plus haut. La gestion des erreurs doit impérativement être un mode d'échappement pas un moyen de contourner l'erreur ce qui aurait pour effet un résultat imprévisible !

    Un message d'erreur est préférable à un résultat loufoque !

  16. #16
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    .... La gestion des erreurs doit impérativement être un mode d'échappement pas un moyen de contourner l'erreur ce qui aurait pour effet un résultat imprévisible !
    Dans gestion des erreurs, il y a "gestion" ! Et gérer c'est pas ignorer !
    Tes 2 exemples ne gèrent rien, ils affichent un message en cas d'erreur mais
    ils laissent continuer le programme au lieu de le stopper ou de résoudre l'erreur :
    ils ignorent les conséquences de l'erreur (ils contournent l'erreur) et c'est ça qui donne des résultats inattendus voire catastrophiques !

    Errare humanum est, perseverare diabolicum est

  17. #17
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 560
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Dans gestion des erreurs, il y a "gestion" ! Et gérer c'est pas ignorer !
    Tes 2 exemples ne gèrent rien, ils affichent un message en cas d'erreur mais
    ils laissent continuer le programme au lieu de le stopper ou de résoudre l'erreur :
    ils ignorent les conséquences de l'erreur (ils contournent l'erreur) et c'est ça qui donne des résultats inattendus voire catastrophiques !

    Errare humanum est, perseverare diabolicum est
    je n'es plus de mots pour te dire qu'on résous jamais une erreur, on évalue les risques pour placer l'application dans les meilleurs disposition!

    par exemple je vérifie si l'imprimante est disponible et prête à imprimer mais un fois c'est précaution prise on est pas dans l'imprimante et une erreur indépendante de ma volonté est possible {EXCEPTION}

    on ne résous pas l'échappe!

    on est au-moins d’accord sur un point l’exemple que j'ai donné ne fait rien! on ne doit du reste jamais rein faire avec un erreur l’acquitter et annuler tout le traitement!

    on ne gère pas les erreur on les subits! gérer le Erreurs c'est évaluer le risques pour pour ne pas solliciter le debugeur!
    Dans la très grande majorité des cas, il n'y a pas d'analyse, on suppose que l'erreur qui s'est produite est celle à laquelle on s'attendait ce qui parfois entraine des comportements inattendus.
    C'est à mon sens et j'imgine au tiens, une hérésie, si on s'attend à l'erreur pourquoi ne rien mettre en œuvre pour l'éviter et voir des comportements inattendus?
    Tu t'evertu montrer un désaccord avec mes propos , alors que je voulais démontrer qu'une gestion centralisée des messages d'erreur était préférable à un on error resume nex!

    En conclusion il faut banire de ses codes le on error sauf pour le cas hardware réseau, imprimante etc...
    Tout ce qui n'est pas prévisible !

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

Discussions similaires

  1. Question on error resume next et on error goto 0
    Par stmastma dans le forum Général VBA
    Réponses: 2
    Dernier message: 16/12/2009, 21h47
  2. [VBA Excel] On error resume next
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/03/2007, 19h20
  3. [VBA-E] On error resum next
    Par Phenx dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/09/2006, 17h27
  4. On Error Resume Next existe il en java??
    Par the_zurg dans le forum Général Java
    Réponses: 9
    Dernier message: 01/06/2006, 22h38
  5. Réponses: 2
    Dernier message: 28/04/2006, 14h10

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