Imbrication de Dir en VBA

L’instruction Dir

En VBA, la commande Dir permet de lister les fichiers ou les sous-dossiers d’un répertoire précis. Généralement, le principe consiste à écrire une boucle qui va extraire, à chaque « tour », le nom d’un nouveau fichier, jusqu’à ce que VBA n’en trouve plus.

La boucle, le tour ? Non, aucun rapport avec le Tour de France… 😉

Le problème est que plusieurs instructions Dir ne peuvent pas être imbriquées les unes dans les autres. En d’autres termes : si vous utilisez Dir à l’intérieur d’une boucle, cette boucle ne peut pas elle-même appeler un autre bout de code qui ferait un Dir différent.

Info
Cet article a pour objectif d’illustrer le problème, mais pas encore de le résoudre. Rassurez-vous, ce sera fait dans le prochain article !

Un petit exemple

Pour rafraîchir, les idées, voici un petit exemple :

Comme d’habitude, vous pouvez :

  1. Recopier ce code dans un module standard de votre base de données.
  2. Modifier la variable strDossier en fonction de votre propre machine.
  3. Faire apparaître la fenêtre Exécution (là où vont s’afficher les noms de fichiers).
  4. Placer votre curseur quelque part dans le code.
  5. Cliquer sur l’icône Exécuter Sub/UserForm.

Imbrication  = complications !

Comme il a été dit en introduction, le problème est que plusieurs instructions Dir ne peuvent pas être imbriquées les unes dans les autres. Pour illustrer le principe, dupliquez la procédure Sub / End Sub précédente (dans le même module), modifiez le nom TestDir1 en TestDir2, et changez également le dossier à analyser. Vous obtenez quelque chose comme ceci :

  • Placez le curseur dans le premier bloc, exécutez : ça marche.
  • Placez le curseur dans le second bloc, exécutez : ça marche aussi ! 🙂
    Mais on n’a encore rien imbriqué : les deux blocs s’exécutent séparément…

Maintenant, modifiez le code pour que la procédure 1 appelle la procédure 2 (cf. lignes surlignées, dans le code ci-dessous) :

Placez le curseur dans le premier bloc, exécutez : ça ne marche plus ! 🙁

Erreur sur imbrication de Dir en VBA

Dans un prochain article on verra une solution parmi d’autres pour traiter ce problème.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *