Liste triée de fichiers en VBA

Dans l’article d’hier, vous avez pu voir comment trier une liste de chaînes grâce à l’algorithme QuickSort. Mais on s’était arrêté sur un exemple un peu théorique. Aujourd’hui, on va se servir de cette méthode pour obtenir une liste triée des fichiers d’un dossier précis.

Le problème

VBA propose une commande (Dir) pour extraire le nom de tous les fichiers d’un dossier. Mais rien ne garantit que cette liste soit triée alphabétiquement.

Pour tester, recopiez ce qui suit dans un module standard de votre base de données, et exécutez-le. Vous verrez une liste de fichiers dans la fenêtre Exécution (Ctrl + G), et cette liste sera triée… ou pas !

Parfois, vous n’aurez pas besoin d’une liste triée, et le programme ci-dessus suffira. Mais si les fichiers doivent être triés, vous devrez :

  1. Soit trier les noms de fichiers par la procédure QuickSort (ou une méthode de tri équivalente).
  2. Soit stocker les fichiers dans une table, puis trier celle-ci par requête.

On suppose ici que les noms de fichiers ne doivent pas être stockés. On va donc s’attaquer à la solution 1 !

Le code

On doit donc écrire une variante de ce qui précède, mais cette fois :

  1. En stockant les noms de fichiers (leur chemin complet, en fait) dans un tableau VBA.
  2. En appelant la procédure QuickSort pour trier ce tableau.

Pour faire tout ça :

  1. Vérifiez que votre base de données comporte la fonction AddBackSlash().
  2. Vérifiez aussi que vous disposez de la procédure QuickSort.
  3. Recopiez ce qui suit dans un module standard de votre base. La fonction renvoie un tableau trié des chemins de fichiers.

Tester

Pour tester tout ça :

  1. Recopiez également le code qui suit dans votre module standard.
  2. Modifiez le chemin et/ou l’extension passés à la fonction FileList().
  3. Exécutez-le code.

Tri alphabétique des fichiers

Vous aimerez aussi...

2 réponses

  1. Baptiste dit :

    Bonjour,
    Comment faire la même chose, mais en affectant chaque ligne de résultat dans une table, par exemple dans une table avec les champs NomFichierComplet (chemin absolu = répertoire absolu + nom fichier + extension fichier) | NomFichier (nom fichier + extension fichier), et insérer dans le même ordre d’idées par exemple la durée (fichiers multimédia) ?
    Merci par avance

Laisser un commentaire

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