Compter le nombre de sous-dossiers dans un dossier

Voici une petite fonction VBA qui permet de compter le nombre de sous-dossiers dans un dossier particulier. En pratique, cette fonction servira rarement toute seule, mais on verra plus tard comment la réutiliser dans un cas concret.

Le code

Voici le code à recopier dans un module standard de votre base de données :

Remarque
Cette fonction utilise elle-même la fonction AddBackslash() dont il est question dans un autre article. Pensez à recopier aussi cette fonction pour que tout fonctionne…

Tester le code

Pour tester rapidement :

  1. Faites apparaître la fenêtre Exécution (Ctrl + G).
  2. Tapez-y quelque chose comme :

Si votre dossier Documents contient des sous-dossiers, vous en verrez le nombre, c’est tout ! 🙂

Compter le nombre de sous-dossiers dans un dossier

Explications

La fonction fait appel à l’instruction Dir dont on a parlé plusieurs fois sur ce blog :

  • La ligne 14 (surbrillée plus haut) récupère le nom du premier fichier ou dossier dans la variable strSousDossier.
  • S’il existe quelque chose, on entre dans la boucle, et chaque tour de boucle fournira un fichier ou un dossier.
  • La ligne 22 (surbrillée aussi) ne prend cette fois-ci pas d’arguments (pas de parenthèses non plus), et signifie en gros : « récupérer le prochain élément conforme à ce qui a été demandé en ligne 14« .
  • A chaque tour de boucle, on exclut déjà les dossiers spéciaux « . » (le dossier en cours) et « .. » (le dossier parent), qui n’ont pas d’intérêt.
  • Ensuite, si l’élément trouvé est un dossier, on incrémente notre compteur.

Un point sournois

En écrivant ceci :

…on s’attend généralement à ne récupérer que des sous-dossiers (vbDirectory) du dossier de départ (strDossier). En fait, c’est un peu plus compliqué que ça :

  • L’instruction Dir liste toujours, par défaut, les fichiers normaux (vbNormal).
  • Le paramètre vbDirectory ne fait qu’ajouter à cette liste les sous-dossiers. Donc la boucle parcourt en réalité tous les fichiers ET les sous-dossiers du répertoire de départ ; c’est moyennement élégant… 😉
  • C’est pour cette raison que, dans la boucle, on refait un test à l’aide de la fonction GetAttr() (Get Attributes) pour vérifier si l’élément trouvé est bien un dossier.

Vous aimerez aussi...

Laisser un commentaire

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