MoveFile

Attila451

XLDnaute Occasionnel
Bonjour,
Je n'ai pas réussi à trouver mon bonheur dans tous les sujets sur MoveFile.
J'ai une mise à jour hebdomadaire de fichier. A chaque nouvelle mise à jour, le fichier de la semaine précédente est mis à jour et renommé avec la date de mise à jour.
Pas de problème à ce niveau, c'est juste que je crée une copie de la sauvegarde dans un sous dossier, mais le fichier d'origine reste au même endroit puisqu'on le copie/colle.
Pour des raisons de lisibilité, je voudrais que le fichier ne soit plus collé mais directement envoyé dans le sous dossier.

Je voudrais que le fichier MAJ140522 qui se trouve "C:\Users\ami\Documents\MAJ140522.xlsm" soit déplacé vers "C:\Users\ami\Documents\AM\MAJ140522.xlsm"

Il y a la fonction MoveFile qui semble être appropriée mais ce que j'ai trouvé est soit trop compliqué, soit ne marche pas...
Je ne sais pas si il faut mettre les chemins en tant qu'objet ou le classeur...

Merci d'avance pour votre aide.
 

Dranreb

XLDnaute Barbatruc
Bonjour
En VBA vous avez déjà l'instruction de base Name pour renommer un fichier et la procédure FileCopy de la bibliothèque VBA pour en créer une copie. Je ne connais guère l'utilité, en plus, de la méthode MoveFile de la classe FileSystemObject de la bibliothèque Scripting.
 

Attila451

XLDnaute Occasionnel
Bonjour,
Merci pour votre retour, je ne souhaite pas effectuer de copie, je voudrais envoyer directement mon fichier MAJ140522.xlsm vers le répertoire AM C:\Users\ami\Documents\AM\MAJ140522.xlsm de manière à ne pas "surcharger" le répertoire Documents (C:\Users\ami\Documents\MAJ140522.xlsm).
J'ai cru comprendre que MoveFile était le plus approprié mais ce n'est peut être pas le cas ?
Cdlt
 

Dranreb

XLDnaute Barbatruc
Non, vous voulez juste qu'il soit logiquement rangé ailleurs, c'est différent.
VB:
Name C:\Users\ami\Documents\MAJ140522.xlsm" As "C:\Users\ami\Documents\AM\MAJ140522.xlsm"
C'est seulement lorsqu'il doit se retrouver sur un autre lecteur qu'on ne peut faire autrement que de le déplacer. Mais quand le piano est trop loin du tabouret c'est plus simple d'en rapprocher le tabouret.
 

Attila451

XLDnaute Occasionnel
Bonjour,
il doit me manquer les roulettes sur le tabouret...
j'ai Erreur d'execution '75': Erreur d'accès Chemin/Fichier,
même en rajoutant le "C:\Users\ami\Documents\MAJ140522.xlsm" As "C:\Users\ami\Documents\AM\MAJ140522.xlsm"
 

Dranreb

XLDnaute Barbatruc
Soit le fichier à renommer n'existe pas, soit c'est le dossier destinataire.
Dans le premier cas spécifiez la référence d'un fichier existant, dans le second vous pouvez préalablement créer le dossier par :
VB:
MkDir "C:\Users\ami\Documents\AM"

Remarque: votre poste #1 ne semble pas coller avec la problématique décrite.
Peut être serait-ce plutôt ça qu'il vous faudrait à un certain moment :
VB:
ThisWorkbook.SaveCopyAs "C:\Users\ami\Documents\AM\MAJ140522.xlsm"
 
Dernière édition:

Attila451

XLDnaute Occasionnel
Bonjour,
MkDir "C:\Users\ami\Documents\AM" => merci, je vais tester.

ThisWorkbook.SaveCopyAs "C:\Users\ami\Documents\AM\MAJ140522.xlsm"=> c'est ce que j'avais utilisé initialement, peut être ai je mal formulé, mon probleme de base est que quand je suis dans l'emplacement C:\Users\ami\Documents\MAJ140522.xlsm" et que je lance la routine ThisWorkbook.SaveCopyAs "C:\Users\ami\Documents\AM\MAJ140522.xlsm", j'ai bien le fichier dans Documents\AM\, par contre, il reste le "fichier d'origine" dans C:\Users\ami\Documents.

C'est ce que je pensais pouvoir traiter avec l'instruction name mais j'ai cette erreur d'execution '75...
 

Dranreb

XLDnaute Barbatruc
Oui mais vous disiez que vous ouvrez toujours le fichier d'origine et pas le fichier dont on fait une copie, alors je ne comprends pas trop la logique parce qu'il faut qu'il reste si on en repart toujours … Enfin bref, je ne comprends pas votre besoin.
Ça ne marche pas peut être parce que le fichier est ouvert.
Si c'est ça alors faites plutôt comme ça :
VB:
Const NouveauChNomF = "C:\Users\ami\Documents\AM\MAJ140522.xlsm"
Dim AncienChNomF As String
AncienChNomF = ThisWorkbook.FullName
If AncienChNomF = NouveauChNomF Then Exit Sub
ThisWorkbook.SaveAs NouveauChNomF
Kill AncienChNomF
 

dysorthographie

XLDnaute Accro
Bonsoir,
Je croyais que cette section était là pour proposer de fonctions personnalisées afin d'apporter des méthodes qui fonctionne aux utilisateurs de ce forum !


Un exemple qui pourrait d'aider :https://excel-downloads.com/threads/fs0-s.20056714/post-20426107
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
515

Statistiques des forums

Discussions
313 243
Messages
2 096 509
Membres
106 644
dernier inscrit
7frd5