Dossiers, fichiers et extensions

Lorsque vous manipulez des dossiers (répertoires) ou des fichiers, il y a des commandes qui reviennent souvent comme :

  • Extraire le nom de fichier à partir d’un chemin complet
  • Extraire l’extension (JPG, PNG, PDF, DOC, XLSX…) d’un fichier à partir de son chemin complet
  • Extraire le nom du fichier, sans son extension, à partir de son chemin complet
  • Extraire le chemin, sans le nom du fichier

Autant en faire des fonctions et ne plus y penser ensuite !

Le code

Recopiez le code ci-dessous dans un module standard (vous pouvez appeler ce module mod Fichiers, par exemple ; ce que j’en dis… :)).

Mode d’emploi

Le code ci-dessus crée 4 fonctions VBA :

  • La fonction Filename()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Hervé\Pictures\photo.jpg), et fournit le nom du fichier (avec son extension) en sortie, soit : photo.jpg.
  • La fonction FilenameWithoutExt()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Hervé\Pictures\photo.jpg), et fournit le nom du fichier (cette fois sans son extension) en sortie, soit : photo.
  • La fonction FileExt()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Hervé\Pictures\photo.jpg), et fournit uniquement l’extension en sortie, soit : jpg.
  • La fonction FilePath()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Hervé\Pictures\photo.jpg), et fournit uniquement le chemin (sans le nom du fichier) en sortie, soit : C:\Users\Hervé\Pictures.

Exemple

Voici un petit programme qui ne sert qu’à tester les fonctions du dessus. Vous pouvez le recopier dans le même module, ou dans un module différent, au choix.

Et le résultat, dans la fenêtre Exécution (CTRL + G) :

Attention
Vous ne devriez fournir à ces fonctions que des paramètres « attendus ». Par exemple, il n’est pas cohérent de chercher l’extension d’un chemin seul, du style C:\Users\Pictures.
Note
Le code ci-dessus utilise parfois la fonction VBA InStrRev(). Cette fonction n’existe pas sous Access 97. Si vous avez cette version, vous devez écrire par vous-même un équivalent de la fonction InStrRev().

Vous aimerez aussi...

4 réponses

  1. Focus3D dit :

    Bonsoir,
    le plugin Crayon Syntax Highlighter semble ignorer le ‘\’ dans le code lignes 37 et 72 .

    Merci pour avoir partagé ces excellents modules.

Laisser un commentaire

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