Déplacer un fichier en VBA

Un petit article rapide pour répondre à une question qui m’a été posée : comment déplacer un fichier en VBA ?

Les commandes

En VBA « natif », il n’y pas de commande spécifique pour déplacer un fichier. En fait si, je devais dormir en écrivant ça ! Comme le souligne DenisS, l’instruction Name fait l’affaire.

  • Name reçoit deux paramètres : le chemin complet du fichier de départ, et le chemin complet de la copie à faire.
  • Vous remarquez qu’on peut, en passant, renommer le fichier (si nécessaire) : mon fichier de départ s’appelle « adresses.txt« , il devient « destinataires.csv« .
  • Les dossiers de départ et d’arrivée peuvent être identiques, et le nom de fichier changer. A la base, la commande Name sert effectivement à renommer un fichier…

On peut intégrer cette commande à une procédure, pour vérifier par exemple si le fichier source existe avant la copie :

Une fois recopiée dans un module standard de votre base de données, cette procédure peut être appelée de n’importe quel endroit VBA par :

Autre méthode : le Scripting Runtime

Il existe une autre méthode, non native,mais utilisant la bibliothèque externe Microsoft Scripting Runtime. Celle-ci propose une instruction MoveFile dont vous trouverez un exemple sur la page Scripting Runtime du site.

Vous aimerez aussi...

8 réponses

  1. djillius dit :

    Salut,

    est-ce que tu as déjà rencontré l’erreur 75 erreur d’accès Chemin/Fichier ?

    Merci pour ton aide

    • Hervé Inisan dit :

      Si l’erreur se produit :
      – Est-ce que le chemin est correctement écrit ?
      – Est-ce que le dossier ou le fichier existe bien ?
      – Est-ce qu’il pourrait y avoir un verrouillage sur le fichier ? (du style : le fichier ouvert dans une autre application)

  2. Hervé Inisan dit :

    christophe vdw > Content que ça puisse dépanner ! 🙂

  3. christophe vdw dit :

    merci
    j’ai mis en place dans ma base.ca marche super+++++++++++
    pour un novice comme moi,des explications aussi claire me donne vraiment envie!!!!!!de continuer.encor mercissssss

  4. Hervé Inisan dit :

    christophe vdw > Je viens de publier un article sur le sujet. C’est ici !

  5. christophe vdw dit :

    bonjour,merci pour le service rapide!!!!
    cependant je rencontre 1 problèmes!!!
    je dépose dans un dossier des classeur exell reçu par mail dont leur »nom »(date &code client)change toujours.

    donc je ne peut pas mettre dans les chemins un mon précis de fichier!!
    ma vrai question est plûtot comment « vider » un dossier dans un autre??????

  6. Hervé Inisan dit :

    DenisS > C’est vrai (et du coup l’article n’a pas d’intérêt 😉 ). Voilà ce que c’est que de poster en quatrième vitesse, après avoir utilisé d’autres langages dans la journée ! Je rectifie…

  7. DenisS dit :

    De mémoire, il me semble que l’instruction Name est capable de déplacer un fichier.

    Maintenant, Dobby va aller se taper la tête contre un mur (plusieurs fois) pour avoir osé contredire le maître 😀

Laisser un commentaire

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