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

Signaler
-
 Monarch -
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.

16 réponses


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
19
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Super ce petit bout de code :D

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
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
De même ici, j ai cherché partout une solution efficace mais en vain et par hasard ce Monsieur vient me sauver la journée :)))))

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.
Messages postés
121
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
11 septembre 2011
14
Bonjour*
que veux tu faire quand le ficher n'existe pas ?
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

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
J'ai exactement le même pb que Loic. Est ce quelqu'un à une idée d'ou cela vient?
Loic, j'ai le même pb que toi; as-tu trouvé une solution?
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
49
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
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

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
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"

re :

DocPrint.Close

devrait plutôt se traduire par :

DocPrint.ClosePrintPreview
DocPrint.Close

Lupin
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 ?????
Bonjour,

J'ai aussi Excel 2003
et j'ai toujours l'erreur
DocPrint.Close False --> Sub ou function non défini
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
Messages postés
4
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
4 mai 2007

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

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
Messages postés
1
Date d'inscription
vendredi 19 août 2016
Statut
Membre
Dernière intervention
19 août 2016
> The Engineer
Bonjour,
Je viens d'essayer ON ERROR GOTO mon_etiquette dans une boucle Do WHILE. A la 1ère erreur générée pas de soucis, la boucle continue comme il faut par contre à la 2ème il y a blocage.
Une idée d'où pourrais provenir l'erreur? (j'ai vraiment beaucoup de difficulté avec cette erreur...)
Merci beaucoup,