Déplacer un document Word (.docm) VBA

Résolu/Fermé
Danny - 24 mai 2018 à 09:10
m@rina Messages postés 21201 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 21 décembre 2024 - 25 mai 2018 à 23:33
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 21201 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 21 décembre 2024 11 370
24 mai 2018 à 14:06
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
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 21201 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 21 décembre 2024 11 370
25 mai 2018 à 00:20
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
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 21201 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 21 décembre 2024 11 370
25 mai 2018 à 23:33
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 mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
25 mai 2018 à 09:10
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