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

5export-test.xlsm (30.68 Ko)

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

Rechercher des sujets similaires à "deplacer classeur repertoire"