Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Gestion d\'erreur

PascalXLD

XLDnaute Barbatruc
Modérateur
Gestion d'erreur

Bonjour

Voilà il y a un petit truc que je ne comprends pas

Dans un code je copie une feuille dans un classeur.
Si le classeur n'est pas ouvert je gère l'erreur en envoyant le code vers une ligne qui me crée ce classeur et me l'enregistre

Tout marche bien pour le premier passage de la boucle :
Il veut copier la feuille dans le classeur qu'il ne trouve pas il va à la ligne pour créer le classeur me l'enregistre. La boucle continue il ne trouve pas le 2ème classeur mais là il ne va pas à la ligne création de fichier il Bug

Alors petite question: Pourquoi ?

Je pourrais bien sûr faire un test avant mais ce qui m'embète c'est que je ne comprends pas le pourquoi ça marche pas.

J'ai essayé un désactivant l'erreur pour le réactiver mais cela fait la même chose

Merci d'avance pour ceux qui m'aideront

Je mets la partie du code pour voir


Message édité par: Pascal76, à: 19/09/2005 13:27
 

Ti_

Nous a quitté
Repose en paix
Re:Gestion d'erreur

Salut Pascal

Outre le fait que ta gestion d'erreur n'est absolument pas ce qu'on peut conseiller de faire, ton programme ne planterait plus si à la place de On Error Goto 0, tu mettais Resume Next, ce qui provoquerait un retour à la ligne Goto Fin.

Ceci dit, tu ferais mieux à chaque fois de tester l'existence de ton fichier, puis, s'il n'existe pas, de le créer dans une autre procédure. Oui je sais, c'est un peu plus complexe que de mettre des Goto, mais incomparablement plus lisible. En conditions normales, la seule chose qu'on devrait s'autoriser avec les On Error Goto, c'est l'affichage d'un message d'erreur et la sortie de la procédure.
(A la rigueur tu pouvais aussi mettre un On Error Resume Next, puis un test d'erreur - If Err Then et création du nouveau fichier dans la boucle If... Then, en n'oubliant pas alors de réinitialiser le gestionnaire d'erreur : Err.Clear)

Tiens, une petite précision à propos de Resume :

Resume Next : poursuit la procédure à la ligne suivant celle qui a provoqué l'erreur

Resume : reprend la procédure à la ligne qui a provoqué l'erreur.

Message édité par: Ti_, à: 19/09/2005 13:32
 

Creepy

XLDnaute Accro
Re:Gestion d'erreur

Bonjour le Forum, Pascal,

A mon avis c'est un problème de gestion des GOTO. j'aurais aimé avoir un exemple pour voir mais bon c 'est po grave.

Essaie de Metttre des exit sub et puis je comprends pas bien pourquoi tu mets ta routine CreationClasseur au milieu !! ?? !!

Met là à la fin et tu sera pas obligé de poser un goto fin !

Enfin voila ma proposition.

@+

Creepy

 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re:Gestion d'erreur

merci aussi Creepy

Mais il faut que la boucle continue après la création du classeur car je peux en avoir d'autres à créer mais c'est vrai que je pouvais sortir la création du classeur de la boucle en finissant par Resume Next. Mais c'est maintenant que j'ai compris la gestion du On Error avec l'actif et le validé que je comprends ce truc ce qui evite le goto fin.

En fait je venais juste en relisant l'aide de voir un truc qui m'avait échappé sur le on error c'est la notion de 'validé' et 'actif'

Voilà ce que dit l'aide (j'ai mis en bleu gras la ligne que je n'avais pas saisi):


Encore merci à vous deux et Ti je vais suivre tes conseils mais mine de rien cela m'énervait de pas comprendre

Message édité par: Pascal76, à: 19/09/2005 13:56
 

Hellboy

XLDnaute Accro
Re:Gestion d'erreur

Bonjour a tous


Juste pour mettre mon grain de sel. Pour la gestion d'erreur, dans ton exemple Pascal76, étant donnée que tu boucle et que l'erreur peut se produire plus d'une fois, il est bien d'annuler l'erreur lorsqu'elle est réglé, pour être sur que ce ne soit pas la même erreur qui est traité lors du re-bouclage.


 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re:Gestion d'erreur

Merci Hellboy

Je ne comprends pas trop ce que tu veux dire

J'ai fait ceci et cela à l'air de marcher sans le on error goto 0 et le Err.clear


Message édité par: Pascal76, à: 19/09/2005 14:36
 

Hellboy

XLDnaute Accro
Re:Gestion d'erreur

re

Excuse moi Pascal76, j'ai pas été assez clair.

Je ne dis pas que ça ne marche pas, mais si un jour tu as plus d'une erreur a géré, c'est plus une question de savoir ce que veut dire les deux énoncés, leur différence et leur importance.

Lorsqu'il y a une erreur, un numéro d'erreur est généré. La façon de la voir est l'utilisation de Err:
Contient des informations sur les erreurs d'exécution.

Le Err.clear sert a mettre l'erreur a zéro.

Le Error goto 0 sert a annuler le gestionnaire d'erreur.

Désolé, pour mon manque d'information !

A+
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re:Gestion d'erreur

Ok

C'est comme cela que j'avais compris le on error goto 0 et le err.clear, mais excuse moi je n'avais pas trop compris ton explication au début et j'avais du mal à remettre ta phrase avec leur utilisation. Mais maintenant c'est bon ta dernière explication conforte ce que j'avais compris

Bonne journée
 

Discussions similaires

Réponses
2
Affichages
176
Réponses
5
Affichages
181
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…