Instruciotn On error

ricomiracle Messages postés 195 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 30 novembre 2009 - 7 juil. 2005 à 17:05
ricomiracle Messages postés 195 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 30 novembre 2009 - 8 juil. 2005 à 08:53
Bonjour,

Voila mon problème:

J'utilise l'instruction On error goto pour gérer une erreur dans une
fonction que l'on appelera fonction1. Cette fonction fait une boucle et
appel une sous-fonction à chque itération. Si il ya une erreur, je gère
le cas ou un parmaètre n'est pas correct et j'appel la même fonction ac
un autre paramètre Voila le code (en gros)



public sub fonction1()

on error goto xxx



for i=1 to 100

fonction2(a,b)

next

exitsub

xxx:

fonction2(a,c)

end sub



sub fonction2()

on error goto 0 'Je pensais que ca permettrais

......

end sub

6 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
7 juil. 2005 à 17:49
Public Sub fonction1()

for i=1 to 100

If fonction2(a,b) Then fonction2 a,c

Next

End Sub



Private Function fonction2(a As Integer, b As Integer) As Boolean

on error goto xxx

......

Exit Sub

xxx:

fonction2 = True

End Sub


Daniel
0
ricomiracle Messages postés 195 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 30 novembre 2009
7 juil. 2005 à 20:25
Oui ca aurait put... Mais en fait l'erreur se produit dans "fonction1"

pour etre exact, b est un élement d' une collection. donc l'appel de la fonction2 se fait comme ca:

Public



Sub fonction1()

for i=1 to 100

If fonction2(a,b("indexitem")) Then fonction2 a,c

Next

End Sub



Mais il se peut que "indexitem" ne sot pas dans la collection d'où:



Sub fonction1()

on error goto xxx


for i=1 to 100


fonction2(a,b("indexitem"))


Next



xxx:

if err.number = 5 then

fonction2(a,b("DEFAUT"))

resume next

endif


End Sub



Et la je ne vois pas commment faire autrement...?

Mais existe pourquoi on error goto 0 ds fonction2 ne rétablit pas le comportement normal??
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
7 juil. 2005 à 21:09
ok je pensais que l'erreur venait de la fonction2



le On Error GoTo 0 ne peut avoir d"effet que dans la fonction ou se trouve le On Error



ce qui gêne c'est que la gestion d'erreur est désactivée pendant que l'erreur est en cours

ça veut dire que dans le xxx s'il y a une autre erreur qui se produit, ça va aboutir à un plantage.

Daniel
0
ricomiracle Messages postés 195 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 30 novembre 2009
7 juil. 2005 à 23:22
Et alors penses tu que si je remplace mon code par:



Sub fonction1()

on error goto xxx

for i=1 to 100

fonction2(a,b("indexitem"))

Next



xxx:

if err.number = 5 then

on error goto 0

fonction2(a,b("DEFAUT"))

on error goto xxx

resume next

endif

End Sub



ca marcherait ca tu penses?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
7 juil. 2005 à 23:54
je crois que c'était mieux avant.

si l'erreur vient de la collection faut peut être mieux la cibler.







Private Sub fonction1()

Dim z As Integer '????



For i = 1 To 100

On Error GoTo xxx

z = b("indexitem")

On Error GoTo 0

fonction2 a, z

Next

Exit Sub



xxx:

If Err.Number = 5 Then

z = b("DEFAUT")

Resume Next

End If

End Sub


Daniel
0
ricomiracle Messages postés 195 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 30 novembre 2009
8 juil. 2005 à 08:53
Effectivement ca me prait bcp mieux comme ca

Merci
0