On error goto, toujours executé

On error goto, toujours executé - VB/VBA/VBS - Programmation

Marsh Posté le 13-02-2006 à 19:20:19    

Bonjour à tous ;)  
 
Mon problème est que j'ai fais un bloc d'erreur.
On error goto Err_Strategis
...
 
Err_Strategis :
    msgBox "BLA"
 
Si il y a une erreur, il saute comme il se doit a Err_Strategis. S'il n'y en a pas il continue de lire mon code ligne par ligne et lorsqu'il arrive à Err_Strategis il lit aussi et affiche le message Box ce que je ne veux pas bien entendu?  
 
Maryse


---------------
Yes! A girl in computer science!
Reply

Marsh Posté le 13-02-2006 à 19:20:19   

Reply

Marsh Posté le 13-02-2006 à 22:29:26    

Les étiquettes de gestion d'erreurs sont habituellement placées à la fin de la sub|function et dans ce cas il faut ajouter avant  l'étiquette
 
Exit Sub|Function
Err_Strategis :  
    msgBox "BLA"
End Sub|Function
 
ou alors mettre une instruction GoTo pour ne pas lire le code d'erreur
 
Goto Suite
Err_Strategis :  
    msgBox "BLA"
Suite:
 
Epéna

Reply

Marsh Posté le 13-02-2006 à 22:34:22    

:hello:  
Pour éviter cela, on met habituellement la gestion d'erreur en fin de procédure, on sort avant si tout va bien et on utilise aussi Resume quelque chose pour annuler le On Error. Donc cela donne quelque chose du genre :
 

Sub proc_toto()
 
   On Error GoTo Err_Strategis
   ...
   ...    
   Exit Sub ' Sort de la procédure
 
Err_Strategis:
    MsgBox "BLA"
    Resume Next   ' Retourne sur la ligne après l'erreur
 
End Sub

Edit : L'excellent Epena a répondu plus rapidement que moi, et dit à peu près la même chose. C'est parfait.


Message édité par olivthill le 13-02-2006 à 22:36:40
Reply

Marsh Posté le 14-02-2006 à 14:35:36    

Finalement je n'ai qu'a mettre Exit sub au dessus!  
 
Merci :)


---------------
Yes! A girl in computer science!
Reply

Marsh Posté le 16-02-2006 à 13:20:35    

A condition que l'étiquette (suivie de ce qu'il y a à faire en cas d'erreur)  soit à la fin de la procédure (Sub ou Function), je suppose.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed