Déplacer un classeur d'un répertoire à un autre
Bonjour,
J'ai cet extrait de code qui doit me permettre de déplacer le classeur en cours d'utilisation vers un autre répertoire.
J'ai adapté le programme que j'ai trouvé dans le tutoriel de ce site : https://excel-malin.com/tutoriels/vba-tutoriels/manipulation-basique-des-fichiers-en-vba/
Sub DeplacerUnFichier()
'déplacer un fichier
Dim NomFichier As String
Dim FullName As String
Dim FichierOriginal As String
Dim FichierDeplace As String
NomFichier = ThisWorkbook.Name
FullName = ActiveWorkbook.FullName
Feuil1.Range("C6").Value = FullName
FichierOriginal = FullName
FichierDeplace = Feuil1.Range("C7").Value & "\" & NomFichier
Name FichierOriginal As FichierDeplace
End Sub
Sauf que lorsque j'exécute ma macro, j'ai une erreur d'exécution '75' avec pour message "Erreur d'accès Chemin/Fichier".
Le débogage pointe sur cette ligne qui est censé modifier l'emplacement du fichier :
Name FichierOriginal As FichierDeplace
Comment puis-je résoudre cette erreur ?
Pour le contexte :
Les chemins que vous voyez dans le fichier de test seront remplacés par des liens de bibliothèque SharePoint. L'idée de ce programme est d'avoir un outil permettant d'archiver mon classeur en le déplaçant d'un répertoire à l'autre. Pour l'utilisateur, je souhaite que cette procédure se résume à cliquer sur un bouton.
Cordialement,
Horusbk
Bonjour,
D'aprés la procédure microsoft la ligne description oldname et new name doit se trouver sur la même ligne avant de faire
le "Name As"
Sub DeplacerUnFichier()
'déplacer un fichier
Dim NomFichier As String
Dim FullName As String
Dim FichierOriginal As String
Dim FichierDeplace As String
NomFichier = ThisWorkbook.Name
FullName = ActiveWorkbook.FullName
Feuil1.Range("C6").Value = FullName
FichierOriginal = FullName: FichierDeplace = Feuil1.Range("C7").Value & "\" & NomFichier
Name FichierOriginal As FichierDeplace
End Sub
https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/name-statement
Bonjour Xmenpl,
Merci pour votre réponse.
J'ai corrigé cette ligne, toutefois j'ai toujours une erreur d'exécution '5' cette fois-ci : "Argument ou appel de procédure incorrect". Le débogage pointe toujours au même endroit.
J'ai lu dans le lien que vous avez transmis :
L’utilisation de Name sur un fichier ouvert génère une erreur. Vous devez fermer un fichier ouvert avant de le renommer.
Modifier le répertoire d'un fichier c'est donc comme le renommer ? Si c'est bien cela, existe-t-il une alternative pour modifier l'emplacement du fichier en cours d'utilisation ?
Merci d'avance.
Horusbk
Peut-être en évitant d'utiliser des Variables qui portent le nom de fonction ? exemple Fullname
Dim NomFichier As String
Dim Chemincomplet As String
Dim FichierOriginal As String
Dim FichierDeplace As String
NomFichier = ThisWorkbook.Name
Chemincomplet = ThisWorkbook.FullName
Feuil1.Range("C6").Value = Chemincomplet
FichierOriginal = Chemincomplet: FichierDeplace = Feuil1.Range("C7").Value & "\" & NomFichier
Name FichierOriginal As FichierDeplace
End Sub
Re,
Hélas toujours le même message et ce, même après avoir modifié la variable "Chemincomplet".
MàJ
Je pense avoir trouvé mon erreur : la macro s'exécute sur le fichier que je souhaite déplacer. Or, selon ce que j'ai pu voir après quelques recherches sur Internet, Windows empêche les utilisateurs de déplacer des fichiers qui sont en cours d'utilisation.
J'ai donc revu ma copie : dans un premier temps j'enregistre dans une cellule l'emplacement de mon fichier en cours d'utilisation (on va l'appeler "Fichier1"). Ensuite, j'effectue un "enregistrer sous" de ce fichier vers un nouvel emplacement. Enfin je supprimer le fichier "Fichier1" grâce au lien que j'ai enregistré plus tôt.
Si cette méthode fonctionne avec des chemins "Windows" il n'en est pas de même avec des liens SharePoint. Lors de l'exécution du code j'ai un erreur 53 "Fichier introuvable".
Voici le code :
Sub SupprimerFichierApresArchive()
Dim supr As String
Dim chemin As String
'On indique le chemin du fichier à supprimer :
Feuil1.Range("C6") = ThisWorkbook.FullName
'On crée un backup dans le répertoire d'archive :
chemin = Feuil1.Range("C7")
ThisWorkbook.SaveAs Filename:=chemin & "\test2.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
'On supprimer le fichier :
supr = Feuil1.Range("C6")
Kill supr
End Sub
Merci d'avance pour votre aide :)
Baptiste