Saut dans boucle VBA

Sybille.F

XLDnaute Nouveau
Bonjour à Tous,

J’ai créé une boucle VBA qui ouvre un à un des fichiers dont j’ai noté les noms les un à la suite des autres.
Jusque-là, ma macro est correcte.

Le problème : parmi ces fichiers, certains n’existent pas et je souhaiterai que ma boucle passe dans ce cas à la ligne suivante.

Comment faire ?

A l'avance merci,

Cordialement,
 

Nairolf

XLDnaute Accro
Re : Saut dans boucle VBA

Salut Sybille,

Afin de pouvoir t'aider au mieux sans avoir à tout reconstruire, merci de mettre à disposition un fichier exemple.

Sache tout de même que l'instruction suivante peut fonctionner dans certains cas : On Error Resume Next

Nairolf
Mon blog : XL assistant
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Saut dans boucle VBA

Bonjour.
J'en déduit que c'est un plantage qui empêche le passage à la ligne suivante ?
Mettez devant l'instruction qui plante: On Error Resume Next
et derrière : On Error GoTo 0
Entre les deux s'il y a d'autres instructions à ne pas exécuter si l'ouverture n'a pu se faire mettez : If Err = 0 Then
 
Dernière édition:

Sybille.F

XLDnaute Nouveau
Re : Saut dans boucle VBA

Bonjour,

Pour aider j'ai ma ligne de code Workbooks.Open CheminVersFichier.

Certains chemins ne mènent vers rien du-tout (ce qui n'est pas une erreur).
Quand il n'y a rien au bout de ce chemin, il faudrait que la macro passe à la boucle suivante, sans effectuer tout ce que j'ai écrit après.

Cordialement,
 

Sybille.F

XLDnaute Nouveau
Re : Saut dans boucle VBA

Bonjour,

Je pense avoir appliqué tout ce que vous m'avez demander de faire (voir fichier).

Toutefois, je ne peux plus lancer ma macro parce que j'ai "un next sans for"! :confused:

et quand je retire tous les :
- devant l'instruction qui plante: On Error Resume Next
- derrière : On Error GoTo 0
- Entre les deux s'il y a d'autres instructions à ne pas exécuter : If Err = 0 Then
ça ne me fait plus cette erreur!

Tout le reste, j'ai réussi à l'écrire toute seule...
mais la je ne comprends plus rien!

Merci d'avance de votre aide
 

Pièces jointes

  • Synthese Donneesb.xls
    98.5 KB · Affichages: 38
  • Synthese Donneesb.xls
    98.5 KB · Affichages: 33

Dranreb

XLDnaute Barbatruc
Re : Saut dans boucle VBA

Dans votre Module1, il n'y a pas On Error Resume Next devant Workbooks.Open CheminVersFichier de sorte que si le classeur ne peut pas être ouvert ça va planter. Est-ce ce que vous voulez ?
S'il y a plusieurs instructions qui peuvent provoquer une erreur mettez chaque fois Err.Clear devant.
Pour chaque If Err = 0 Then, il doit y avoir un End If correspondant.
À mon avis vous n'avez pas besoin de tant de If Err = 0 Then. Tout au plus 3 ou 4, et 3 ou 4 End If tout à la fin, juste avant le Next x
Un conseil: indentez vos instructions: mettez les toutes en retrait vers la droite après un Then, jusqu'au End If correspondant.
 
Dernière édition:

Sybille.F

XLDnaute Nouveau
Re : Saut dans boucle VBA

YOUPIIIIIIIIIIIIII ;)

Çà marche!!!

J'ai tout compris (enfin sauf le coup du err.clear, même s'il fonctionne)

Merci tout le monde, Nairolf et surtout Dranreb!

Je vous mets en copie mon dossier final, on ne sais jamais, ça pourrait éventuellement servir a quelqu'un d'autre par la suite!
 

Pièces jointes

  • Synthese Donneesb.xls
    104 KB · Affichages: 42
  • Synthese Donneesb.xls
    104 KB · Affichages: 37

Dranreb

XLDnaute Barbatruc
Re : Saut dans boucle VBA

Il s'avère que le Err.Clear n'était pas utile dans votre cas.
Il est seulement utile dans le cas d'instructions à exécuter même si une erreur est survenue plus haut, s'il n'y a pas eu de On Error GoTo 0 depuis, et si l'on veut pouvoir détecter une nouvelle erreur possible au lieu de retomber sur l'autre, toujours encore notée dans Err.
Inutile aussi de répéter On Error Resume Next tant qu'il n'y a pas eu de On Error GoTo 0 pour l'annuler.
 

Discussions similaires

Réponses
9
Affichages
293

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet