OVH Cloud OVH Cloud

On Error GoTo ??

4 réponses
Avatar
DENIS
Bonjour à tous,

Voici une partie de ma macro. Le premier GoTo fonctionne bien. Si le
répertoire sur le réseau est momentanement indisponible, l'instruction passe
à "message:" sinon il passe par "suite:". Mon problème est qu'il bug pour le
2ème GoTo.
Pourquoi après l'instruction de "suite", si le fichier n'est pas trouvé sur
le répertoire P:\ en cours de maintenance, il bug en ne passant pas à
"suite2" pour terminer l'instruction ? Comprend pas.

'si le répertoire P:\ n'existe plus momentanement
On Error GoTo message:

ChDir "P:\EQUIPEMENT"
Workbooks.Open Filename:="P:\EQUIPEMENT\Enlevement.xls"

GoTo suite:

'si le répertoire P:\ n'existe plus momentanement
message:
MsgBox "Problème dans lors de l'envoi du fichier d'enlèvement. Soit le
répertoire est en cours de maintenance, soit le fichier a été supprimé. Merci
de faxer votre demande d'enlèvement qui va s'imprimer, le temps de régler ce
problème.", vbOKOnly + vbOKOnly + vbExclamation, "Problème d'envoi de la
demande d'enlèvement"
'imprime 1 copie à faxer manuellement
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=DefPrt,
Collate:=True

'continue l'instruction si pas de plantage P:\
suite:
'----- reaffectation de l'imprimante d'origine
Application.ActivePrinter = DefPrt

On Error GoTo suite2:
'Insertion de l'enlèvement dans la base de données commune
ChDir "P:\EQUIPEMENT"
Workbooks.Open Filename:="P:\EQUIPEMENT\base pickup.xls"

Suite2:
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select

End Sub

4 réponses

Avatar
Yvan95
Bonjour Denis

Le gestionnaire d'erreur étant déjà actif quand tu arrive à l'instruction
GoTo Suite2, celle ci est inopérante.

Il te faut donc désactiver le gestionnaire d'erreur avec une instruction
Resume avant de le réactiver.

Remplace donc ton instruction

GoTo Suite2

par

Resume Ici
Ici:
On Error GoTo Suite2

Cà devrait aller mieux.

OK?

@+

Yvan



"DENIS" a écrit dans le message de news:

Bonjour à tous,

Voici une partie de ma macro. Le premier GoTo fonctionne bien. Si le
répertoire sur le réseau est momentanement indisponible, l'instruction
passe
à "message:" sinon il passe par "suite:". Mon problème est qu'il bug pour
le
2ème GoTo.
Pourquoi après l'instruction de "suite", si le fichier n'est pas trouvé
sur
le répertoire P: en cours de maintenance, il bug en ne passant pas à
"suite2" pour terminer l'instruction ? Comprend pas.

'si le répertoire P: n'existe plus momentanement
On Error GoTo message:

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTEnlevement.xls"

GoTo suite:

'si le répertoire P: n'existe plus momentanement
message:
MsgBox "Problème dans lors de l'envoi du fichier d'enlèvement. Soit le
répertoire est en cours de maintenance, soit le fichier a été supprimé.
Merci
de faxer votre demande d'enlèvement qui va s'imprimer, le temps de régler
ce
problème.", vbOKOnly + vbOKOnly + vbExclamation, "Problème d'envoi de la
demande d'enlèvement"
'imprime 1 copie à faxer manuellement
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:ÞfPrt,
Collate:=True

'continue l'instruction si pas de plantage P:
suite:
'----- reaffectation de l'imprimante d'origine
Application.ActivePrinter = DefPrt

On Error GoTo suite2:
'Insertion de l'enlèvement dans la base de données commune
ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase pickup.xls"

Suite2:
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select

End Sub



Avatar
Yvan95
Re-Bonjour!

J'ai retrouvé avec un peu de retard ma source:
www.excelabo.net/xl/erreurs.php

Tu verras. Tout est expliqué très clairement et en détail.

Yvan
Avatar
DENIS
Bonjour Yvan,

j'ai bien rajouté :
Resume Ici
Ici:
avant On Error GoTo Suite2, mais cela active "On error GoTo message:"
C'est étrange car il donne le message d'erreur meme si l'autre fichier
"Enlevement.xls" se trouve bien sur le répertoire p:


Denis


Bonjour Denis

Le gestionnaire d'erreur étant déjà actif quand tu arrive à l'instruction
GoTo Suite2, celle ci est inopérante.

Il te faut donc désactiver le gestionnaire d'erreur avec une instruction
Resume avant de le réactiver.

Remplace donc ton instruction

GoTo Suite2

par

Resume Ici
Ici:
On Error GoTo Suite2

Cà devrait aller mieux.

OK?

@+

Yvan



"DENIS" a écrit dans le message de news:

Bonjour à tous,

Voici une partie de ma macro. Le premier GoTo fonctionne bien. Si le
répertoire sur le réseau est momentanement indisponible, l'instruction
passe
à "message:" sinon il passe par "suite:". Mon problème est qu'il bug pour
le
2ème GoTo.
Pourquoi après l'instruction de "suite", si le fichier n'est pas trouvé
sur
le répertoire P: en cours de maintenance, il bug en ne passant pas à
"suite2" pour terminer l'instruction ? Comprend pas.

'si le répertoire P: n'existe plus momentanement
On Error GoTo message:

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTEnlevement.xls"

GoTo suite:

'si le répertoire P: n'existe plus momentanement
message:
MsgBox "Problème dans lors de l'envoi du fichier d'enlèvement. Soit le
répertoire est en cours de maintenance, soit le fichier a été supprimé.
Merci
de faxer votre demande d'enlèvement qui va s'imprimer, le temps de régler
ce
problème.", vbOKOnly + vbOKOnly + vbExclamation, "Problème d'envoi de la
demande d'enlèvement"
'imprime 1 copie à faxer manuellement
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:ÞfPrt,
Collate:=True

'continue l'instruction si pas de plantage P:
suite:
'----- reaffectation de l'imprimante d'origine
Application.ActivePrinter = DefPrt

On Error GoTo suite2:
'Insertion de l'enlèvement dans la base de données commune
ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase pickup.xls"

Suite2:
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select

End Sub








Avatar
Yvan95
Salut Denis.

Bizarre que çà ne fonctionne pas chez toi!

Je me suis bricolé une petite procédure de test qui ressemble à ta routine,
et çà marche chez moi nickel, comme décrit chez Excelabo.

Public Sub Essai()
Dim t As Single

On Error GoTo Suite1
t = 0
t = 1 / t ' première division par zéro
t = 2

Suite1:
Resume Ici
Ici:
On Error GoTo Suite2
t = 0
t = 1 / t ' deuxième division par zéro
GoTo Suite3

Suite2:
t = 1
Exit Sub
Suite3:
t = 2
End Sub

Si je ne mets pas l'instruction resume ici, le programme plante à la
deuxième division par zéro.

Si je mets resume ici et pas on error goto Suite2, il continue à renvoyer
sur Suite1 à chaque erreur.

Si je mets goto suite2, après le label Ici: OU avant resume Ici, il renvoie
sur le label Suite2 comme souhaité.

Par contre, si je remplace t=0 par t=1 pour que la première division ne soit
pas en erreur, il éxecute deux fois la ligne resume ici !!!!

Cà me dépasse aussi un peu (et même beaucoup). Je continue à essayer de
comprendre et le premier qui avance sur le sujet prévient l'autre.

A moins que quelqu'un de la communauté puisse nous éclairer!

@ +

Yvan


"DENIS" a écrit dans le message de news:

Bonjour Yvan,

j'ai bien rajouté :
Resume Ici
Ici:
avant On Error GoTo Suite2, mais cela active "On error GoTo message:"
C'est étrange car il donne le message d'erreur meme si l'autre fichier
"Enlevement.xls" se trouve bien sur le répertoire p:


Denis