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.
1 2 |
Name "C:\Users\Hervé\Desktop\DossierA\adresses.txt" _ As "C:\Users\Hervé\Desktop\DossierB\destinataires.csv" |
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 :
1 2 3 4 5 6 7 8 |
Sub DeplacerFichier(ByVal strSource As String, ByVal strCible As String) If Dir(strSource) = "" Then MsgBox "Fichier source introuvable : " & strSource, vbExclamation Exit Sub End If Name strSource As strCible End Sub |
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 :
1 2 |
DeplacerFichier "C:\Users\Hervé\Desktop\DossierA\adresses.txt", _ "C:\Users\Hervé\Desktop\DossierB\destinataires.csv" |
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.
Salut,
est-ce que tu as déjà rencontré l’erreur 75 erreur d’accès Chemin/Fichier ?
Merci pour ton aide
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)
christophe vdw > Content que ça puisse dépanner ! 🙂
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
christophe vdw > Je viens de publier un article sur le sujet. C’est ici !
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??????
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…
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 😀