Utilisation de OnError GoTo

spouich -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir,
[VBA Excel]
J'ai un doute auquel mes multiples recherches n'ont trouvé aucune solution :
Avant tout, je tiens à préciser que je ne fais pas dans la programmation spaghetti, mais que j'utilise GoTo à la seule fin de gestion des erreurs.
Ma question, c'est comment fixer le début et la fin du Label auquel GoTo fait référence. Je souhaite transformer OnError en "if", de sorte à remédier directement au problème pour pouvoir poursuivre la procédure.

Pour être plus explicite si je fais :

sub importer()

'procédure
'ligne potentiellement erronée
OnError GoTo erreur

'suite de la procédure

erreur:
'Résolution de l'erreur

end sub


Je voudrais qu'après la résolution de l'erreur, le programme revienne à "suite de la procédure" et non à "end sub".

3 réponses

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    Resume Next
    Resume Label
    0
    1. spouich
       
      Avant tout, veuillez accepter mes plus sincères excuses pour ma rustrerie de n'avoir pas inséré la simple formule "s'il vous plaît".

      Ceci dit, merci pour cette réponse, rapide.
      Pourriez-vous s'il vous plaît m'éclairer, je ne sais pas où mettre ni l'un ni l'autre.

      Merci de votre compréhension.
      0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Après les traitements dans le On Error (et donc avant en End Sub ou la gestion suivante.
      Next, instruction suivante de celle ayant générée l'erreur
      Label, le label de la ligne à laquelle il faut aller (en gros, un Goto avec RAZ de l'erreur)
      0
    3. spouich
       
      Si je comprends bien, je devrais procéder ainsi :

      sub importer()

      'procédure
      'ligne potentiellement erronée
      OnError GoTo erreur
      resume next

      'suite de la procédure

      erreur:
      'Résolution de l'erreur
      resume label

      end sub
      0
    4. spouich
       
      Est-ce correct ?
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Tu as 3 syntaxes possibles

    Resume 0
    reprend à l'endroit où s'est produit l'erreur
    Resume next
    reprend de l'instruction qui suit immédiatement l'erreur
    Resume ligne (ou label)
    reprise à l'endroit spécifié par Ligne (ou label)
    intéressant lorsqu'on gère plusieurs erreurs possibles

    par ex: on saisit un nombre au lieu d'un texte
    dim blabla as String
    OnError GoTo erreur
    1 blabla=Application.inputbox(.....,2)
    '2 vérifie si on a saisit du texte sinon déclechement erreur

    'suite de la procédure
    Exit sub
    erreur:
    'Résolution de l'erreur
    resume 1


    Michel
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Merci !

    De rien...
    0