Utilisation de OnError GoTo

Fermé
spouich - 5 avril 2015 à 23:04
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 8 avril 2015 à 09:08
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

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
5 avril 2015 à 23:13
Resume Next
Resume Label
0
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
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
5 avril 2015 à 23:24
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
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
Est-ce correct ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 6/04/2015 à 08:19
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 avril 2015 à 09:08
Merci !

De rien...
0