Téléchargement
illégal
Posez votre question Signaler

VBA/Excel Instruction: On Error Resume Next [Résolu]

loic - Dernière réponse le 16 juin 2011 à 18:24
Bonjour,
Pb. en VBA Excel
J'ai un problème avec l'instruction "on error resume next", je dois mal l'utiliser ou je n'ai pas la bibliothéque je ne sais pas ...
Où que je place l'instruction dans mon code elle n'est pas prise en compte
Exemple:
On Error Resume Next
Workbooks.Open "le chemin du fichier à ouvrir"
Si le fichier n'esiste pas, il me met l'erreur qd meme.
Je fonctionne sous Excel 2003
Merci d'avance.
Lire la suite 

VBA/Excel Instruction: On Error Resume Next »

19 réponses
Réponse
+9
moins plus
Bonjour,

voici un exemple d'utilisation :

Sub Essai()
    On Error Resume Next
    Workbooks.Open "C:\MonFichier.xls"
    If (Err.Number > 0) Then
        MsgBox "Impossible d'ouvrir le fichier"
    End If
End Sub
'

Lupin
Ajouter un commentaire
Réponse
+6
moins plus
Bonjour,

N'importe quoi ! RESUME NEXT n'a rien à voir avec FOR TO NEXT !!

LE problème c'est que l'exemple proposé est tout à fait juste, et fonctionne très bien ! A savoir :

Sub essai()
On Error Resume Next
Workbooks.Open "le chemin du fichier à ouvrir"
End Sub

NE déclanche pas le message d'erreur. Si on met On error resume next en REM alors on obtient l'erreur 1004.

DONC Loic, il faudrait voir plus loin... Est-ce que tu désactive de nouveau la gestion des erreurs ? PAR exemple avec On Error GoTo 0 permet de désactiver la gestion d'erreur dans la routine en cours.
Ajouter un commentaire
Réponse
+2
moins plus
Bonjour,

Si "On error resume next" semble ne pas être actif (VBA s'arrete quand même sur les erreurs), vérifier :
dans VBA, menu Outils/Options, onglet Général
que la récupération d'erreur n'est pas sur "Arret sur toutes les erreurs".

Dans ce cas, sélectionner "Arret sur les erreurs non gérées".

Bonne chance
Ete - 6 nov. 2009 à 12:56
Bonjour

Merci pour votre aide, que même après presque 2 ans que vous l’aviez posté, pour moi elle a été de grande valeur aujourd’hui.

Excusez-moi pour mon "petit français"

Je vous remercie beaucoup encore, depuis le Brésil

Ete
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour*
que veux tu faire quand le ficher n'existe pas ?
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

IL Suffit de rechercher le fichier avant de lancer la commande ON ERROR

Ex :

IFf Dir("Le Chemin + Nom du Fichier") = "" Then
Msgbox "Fichier Introuvable "
ELSE
ON ERROR RESUME NEXT
...
...
...
END IF
Ajouter un commentaire
Réponse
+0
moins plus
J'ai exactement le même pb que Loic. Est ce quelqu'un à une idée d'ou cela vient?
Ajouter un commentaire
Réponse
+0
moins plus
Loic, j'ai le même pb que toi; as-tu trouvé une solution?
ShaBoo- 21 sept. 2007 à 12:20
Bonjour,

le "On error resume next" evite de générer une erreur.

Si par exemple tu fais une action d'ecriture sur un fichier en lecteur seul, tu ne verras pas l'erreur et l'action continuera sans rien faire.

Ce qu'il faut faire dans :

- Traiter la var. "Err" après chaque action.

Ex :

Dim x
On Error Resume Next
Err.Raise 6
If Err.Number <> 0 Then Err.Clear
Ajouter un commentaire
Réponse
+0
moins plus
G toujour le même pb sur la méthode QUIT
Erreur : "Sub ou Function non défini"

Function FermeWord() As Long

On Error Resume Next


If Not GASI_Imp.oMonwd Is Nothing Then

'** A3/101 : boucle d'attente de fin des impressions en cours
While GASI_Imp.oMonwd.BackgroundPrintingStatus > 0
Wend

GASI_Imp.oMonwd.Quit False --> ERREUR "Sub ou Function non défini"
Set GASI_Imp.oMonwd = Nothing
End Function
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

GASI_Imp.oMonwd.Quit

devrait plutôt se lire :

GASI_Imp.oMonwd.Close

et si je vois la ligne de libération :

Set GASI_Imp.oMonwd = Nothing

où est la ligne d'initialisation :

Set GASI_Imp.oMonwd = CreateObject("Word.Application")

???

Lupin
Ajouter un commentaire
Réponse
+0
moins plus
J'ai remplace
GASI_Imp.oMonwd.Quit
par
GASI_Imp.oMonwd.Close
est ca marche !!! Merci Lupin de ton aide

Par contre, j'ai une autres message "Sub ou function non defini"

'Récupération de la fenêtre de publipostage
Set DocPrint = GASI_Imp.oMonwd.ActiveDocument

...

' impression de la lettre au format PDF
DocPrint.PrintOut PrintToFile:=False

....

'On ferme la fenêtre imprimée
On Error Resume Next
'On ferme la fenêtre imprimée
DocPrint.Close False --> Sub ou function non défini
Set DocPrint = Nothing
Err.Clear
on Error GoTo ErreurWord
'On vérifie qu'un autre document n'est pas ouvert, et si
'c'est le cas on le ferme
For Each Doc In GASI_Imp.oMonwd.Documents
Doc.Close False
Next Doc

Quelqu'un a-t-il une idée pourquoi le message "Sub ou function non defini" est remontée alors que j'ai mis "On Error Resume Next"
Ajouter un commentaire
Réponse
+0
moins plus
re :

DocPrint.Close

devrait plutôt se traduire par :

DocPrint.ClosePrintPreview
DocPrint.Close

Lupin
Ajouter un commentaire
Réponse
+0
moins plus
j'ai excatement le meme probleme avec on error resume next
en excel 2000 le code fonctionne en 2003 il s'arrete sur chaque erreur ?????
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

J'ai aussi Excel 2003
et j'ai toujours l'erreur
DocPrint.Close False --> Sub ou function non défini
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Quelqu'un a une idée pourquoi le "on error resume next" ne marche pas avec Office 2003 ???

Merci si quelqu'un peut m'aider
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
hijag, je n'ai plus de pb. En effet, j'ai résolu un autre bug ce matin qui je pense a résolu c'est erreur

Lors de la conversion du doc en pdf, j'ai rajouté la boucle

' Tant que la propriété de cPrinterStop est à False, on laisse le temps au composant
' de terminer l'export PDF
While myPDFCreator.cPrinterStop = False
DoEvents
Wend

juste avant le PrintOut

Plus aucun message d'erreur ne m'est remonté maintenant

Tu dois donc avoir une autre erreur dans ton prog
Ajouter un commentaire
Réponse
-3
moins plus
Pour utiliser Resume next ... il faut que l'erreur soit générée dans une boucle avec Next, genre FOR ... NEXT

Pour ton exemple , Je pense que tu devrais utiliser , On error GoTo
The Engineer - 16 juin 2011 à 18:24
Tiens, je vais répondre 4 ans après la question... Des fois que quelqu'un tombe dessus...
Le NEXT du ON ERROR RESUME NEXT n'a strictement RIEN A VOIR avec le NEXT des boucles FOR...NEXT.

En anglais, "Resume" peut se traduire, dans ce cas, par "reprise". Il faut donc comprendre l'instruction ainsi :
"EN CAS D'ERREUR, REPRENDRE L'EXÉCUTION DU PROGRAMME A L'INSTRUCTION SUIVANTE"
"Next" = "Next statement".

ça, c'est juste pour ne pas s'emmerder avec des erreurs prévisibles. Sinon, il vaut mieux écrire une routine de gestion d'erreur et s'y brancher par ON ERROR GOTO étiquette_d'entrée_de_la_routine.

Bonjour chez vous.
The Engineer
Ajouter un commentaire
Ce document intitulé « VBA/Excel Instruction: On Error Resume Next » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?