Regrouper des fichiers dans des dossiers en suivant une liste Excel

Bonjour,

Je dispose d'une liste d'élèves sur Excel et dans un dossier de nombreux fichiers PDF nommés "bulletins DUPONT ALFRED XXXXX" ou "Liste absences DUPONT ALFRED YYYYY" .....

Je souhaiterais programmer en VBA un utilitaire qui parcourerait la liste excel des élèves, qui créerait un dossier portant le nom de l'élève et y mettrait tous les fichiers qui portent son nom.

Je sais programmer en VBA mais pas du tout sur ces thématiques.

Merci!

Bonjour,

Peut etre regarder par ici Gestionnaire universel de fichiers (excel-pratique.com)

Sinon, classiquement pour ce genre d'opérations on utilise en VBA l'objet " FileSystemObject" de la Microsoft Scripting Runtime Library (cf. VBA File System (vbaplanet.com) , paragraphe 2).

C'est une classe qui implémente la plupart des opérations courantes (recherche, itération, copie, renommage, etc.) de l'explorateur de fichiers. Je trouve personellement la doc assez claire, a voir si vous voulez des infos plus précises.

Bonjour Mostat78,

Sauf erreur, ta demande est de te mettre sur la piste et pas de faire à ta place et je te réponds dans ce cadre.

Si tu es sous Windows, une possibilité est d'utiliser l'objet "FileSystemObject" (il faut ajouter le référence "Microsoft Scripting Runtime") et ses nombreuses méthodes qui permettent de manipuler les dossiers et les fichiers. Pour traiter les fichiers, s'ils sont dans un seul dossier, il ne sera pas nécessaire de créer une procédure récursive pour parcourir les dossiers et sous-dossiers donc c'est plus simple.

Une manière d'aborder cette thématique est de :

  • Recenser les élèves dans un tableau à 2 dimensions [ LesEleves(1 to 2, 1 to NbEleves) ]. Ce qui permet de faire un "Redim Preserve" du tableau en fonction du nombre d'élèves recensés.
    • LesElèves(1, e) = le nom
    • LesEleves(2, e) = False (témoin de création du dossier)
  • Lister les fichiers dans un 2ème tableau à 2 dimensions [ LesFichiers( 1 To 2, 1 To NbFichiers) ]
    • [ LesFichiers(1, i) le nom fichier
    • [ LesFichiers(2, i) ] = L'indice de l'élève dans le 1er tableau s'il est identifié et sinon = -1). Les éléments dont l'indice d'élève sera à -1 pouvant être listés en fin de traitement pour éventuellement traiter manuellement ces fichiers ou si tu optes pour utiliser la méthode permettant de déplacer les fichiers, ceux qui ne seront pas reliés à un élève, seront encore présents dans le dossier de base.
  • Boucler sur le tableau LesFichiers pour traiter les fichiers avec un élève identifié => créer le dossier si LesEleves(2, e) = False et mettre à True LesEleves(2, e) pour ne plus tenter de recréer le dossier. Puis copier / coller le dossier ou le déplacer.
  • tester à partir d'une liste réduite d'élèves et de quelques fichiers mis dans un dossier de test pour ne pas courir le risque d'en perdre au cours des tests ...

Cdlt,

Cylfo

Merci Cylfo.

Je tente de programmer tout ça avec tes lumières.

Bonne journée.

Re,

et si tu as besoin de précisions / d'aide, n'hésites pas

Bonne programmation,

Cylfo

Rechercher des sujets similaires à "regrouper fichiers dossiers suivant liste"