Déplacer un document Word (.docm) VBA

Résolu
Danny -  
m@rina Messages postés 23923 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à toutes et à tous,

J'essaye à ce jour de déplacer un document word via VBA. Il s'agit de déplacer un document A grâce à un bouton placé dans ce document-même A (et non pas de déplacer un document B a partir d'un document A).

Pour ce faire, je pensais d'abord copier ce document dans l'emplacement emplacementFinal puis de le supprimer de l'emplacement emplacementInitial. Code :

Public Sub Deplacer()

Dim chemin As String
chemin = emplacementFinal
If MsgBox("Êtes-vous sûre de vouloir effectuer cette opération ? Si oui, vous pourrez retrouver ce document a l'emplacement ....", vbYesNoCancel) = vbYes Then
ActiveDocument.SaveAs2 fileName:=chemin & ActiveDocument.Name
End If
End Sub

Public Sub SupprimerCeDocument()
Dim MyFile As String
MyFile = ancienChemin & ActiveDocument.Name
If MsgBox(MyFile & " will be deleted permanently", vbYesNo, "Delete this File?") = vbYes Then
ActiveDocument.Close (wdDoNotSaveChanges)
Kill MyFile
End If
End Sub


Je souhaite donc apeller Deplacer puis SupprimerCeDocument. Problème 1 : Quand jappel la fonction "deplacer" le fichier ne s'enregistre pas comme je le voudrais c'est à dire que la fenêtre me demendant où je souhaite enregistrer le document s'ouvre. Probleme 2 : Quand j'appel la fonction SupprimerCeDocument le document ne se supprime pas. J'ai pourtant vérifié les chemins avec des msgBox.

Auriez vous des solutions (éventuellement plus simples ?) pour faire cela ?

Vous souhaitant une bonne journée,

Danny

A voir également:

2 réponses

m@rina Messages postés 23923 Date d'inscription   Statut Contributeur Dernière intervention   11 465
 
Bonjour,

Tu es en train d'essayer de supprimer un document ouvert via une macro contenue dans ce document... Tu comprends que ce n'es pas logique.
Pour supprimer un document ouvert, il faut commencer par le fermer, et si tu le fermes, la macro ne pourrra plus fonctionner !

Conclusion : la macro doit être dans un autre document, le normal.dotm ou un complément.

m@rina
0
Danny
 
Merci m@rina :) et du coup n'y aurait-il pas un moyen de deplacer le document .docm sans faire copie / suppression ? Juste le déplacer ? Si j'utilise .saveas2 nouveauChemin et bien il va senregistrer dans le nouveau chemin ET dans l ancien.

Bonne soirée :)
0
m@rina Messages postés 23923 Date d'inscription   Statut Contributeur Dernière intervention   11 465
 
Bonjour,

Ben non, c'est la même réponse : on ne peut pas déplacer un document ouvert, que ce soit depuis Word ou depuis Windows.

Mais pourrait-on en savoir plus sur la finalité exacte ?
Pourquoi le document serait à un endroit x et pourquoi faudrait il le déplacer à endroit y ?

m@rina
0
Danny
 
Bonjour m@rina :) Et bien j'ai un dossier "Documents en cours de traitement" et un dossier "documents traités". J'aurai aimé qu'en une macro on déplace le document qui est en cours dans "documents traités". Sinon je peux faire une mini appli qui s'ouvre (un autre excel) pour gérer ces mouvements s'il n'y a pas d'autres moyens ^^
0
m@rina Messages postés 23923 Date d'inscription   Statut Contributeur Dernière intervention   11 465
 
Bonsoir

C'est possible avec Word, mais il faut à ce moment-là créer un complément, de façon à ce que la macro ne se trouve pas dans le fichier à déplacer.

Ce complément va simplement faire un enregistrer sous dans le nouveau dossier, puis va supprimer le fichier "en cours".

Donc, tu crées un nouveau document vide, tu y mets la macro suivante :
Sub changer()
Dim NomFichier As String, AncienFichier As String, NouveauChemin As String

AncienFichier = ActiveDocument.FullName

NouveauChemin = "c:\nouveau_chemin\"
NomFichier = ActiveDocument.Name

ActiveDocument.SaveAs2 FileName:=NouveauChemin & NomFichier

Kill AncienFichier
End Sub


et tu l'enregistres dans le dossier Startup de Word qui se trouve ici par défaut :
C:\Users\nom User\AppData\Roaming\Microsoft\Word\STARTUP

Ton fichier sera automatiquement considéré comme un complément car il sera chargé à chaque fois que tu ouvriras Word. Tu as d'ailleurs intérêt à mettre un bouton sur la barre d'outils Accès rapide pour lancer la macro.

Je te laisse mettre tes alertes si nécessaire. ;)

m@rina
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

comme dit m@rina, tu ne peux obliger la macro à se 'suicider'.
En plus de gérer ça dans une macro hors du document tu peux aussi faire un fichier batch (scripts vbs) que tu écris et lance à la fermeture, et qui s'occupera du déplacement.
Ici différentes façon de retarder un .bat : https://fr.wikihow.com/retarder-un-fichier-Batch
eric
0