On error VBA

On error VBA - VB/VBA/VBS - Programmation

Marsh Posté le 09-02-2006 à 17:09:32    

Sub|Function SomeName()
2     On Error GoTo Err_SomeName          
3     ' Code to do something here.
4 Exit_SomeName:                          
5     Exit Sub|Function                    
6 Err_SomeName:                            
7     MsgBox Err.Number & Err.Description  
8     Resume Exit_SomeName              
9 End Sub|Function
 
Ce que je comprends du traitement d'erreur en VBA c'est qu'on a pas le choix de mettre nos erreurs a la fin ??
J'aimerais pouvoir dire (pour telle et telle ligne c'est Err_nomQuelquonque, mais apres pour ces autres lignes c'est ... (Finalement j'aimerais bien avoir le try and catch de java et de c qui est beaucoup plus efficace GRRRR)
J'ai une grosse function et je ne veux pas envoyer toutes les erreurs au même traitement d'erreur.
 
Je ne sais pas si mon message est clair, mais je l'espère :) hehe
 
Merci d'avance à ceux qui prenne le temps de lire mon message.  

Reply

Marsh Posté le 09-02-2006 à 17:09:32   

Reply

Marsh Posté le 09-02-2006 à 17:39:32    

Quel est le le problème ?

Code :
  1. On Error GoTo Err_SomeName
  2. ...blabla
  3. Exit Sub|Function                   
  4. Err_SomeName:
  5. Select case Err
  6. Case 1: "DoThis": x= 1
  7. Case 7: "DoThat": x=1
  8. Case 23: "DoElse": x= 2
  9. Case 99: "DoOtherAndExitProcess"
  10. Case Else: x = 3
  11. End Select
  12. If x> 1 Then
  13. Resume
  14. Else
  15. MsgBox "blabla"
  16. End if
  17. End Sub|Function

Ok ?


Message édité par galopin01 le 09-02-2006 à 20:27:15

---------------
roger
Reply

Marsh Posté le 09-02-2006 à 18:43:17    

"c'est qu'on a pas le choix de mettre nos erreurs a la fin ??" j'ai eu du mal à comprendre, je pensais que l'exemple était trop clair.
 
La question semble être : "comment peut-on regrouper dans un module unique le traitement de toutes les erreurs du "projet" ?
 
L'exemple juste au dessus montre qu'on peut, quand on fait un  
On Error GoTo Err_SomeName
à l'adresse Err_SomeName, rien n'empêche de faire appel à une fonction qui réagira (en "externe", disons de façon isolée, autonome, .. [trouve pas le bon mot]) selon les paramètres qu'on lui passe, puis faire un resume selon le contexte (resume next, resume bidule).
 
En se débrouillant avec l'erreur passée en argument, les paramètres "contextuels", on peut afficher l'erreur dans le bon "mode".

Reply

Marsh Posté le 10-02-2006 à 15:57:33    

Merci à vous deux ;)

Reply

Sujets relatifs:

Leave a Replay

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