Salut,
Tout d’abord bonne année à tous.
J’ai un soucis avec une macro utilisé dans word.
Le but de celle-ci est qu’au moment de la fermeture du fichier (.doc) la macro s’exécute.Elle doit tout d’abord controler si je suis l’utilisateur et si c’est le cas me proposer de faire la sauvegarde d’une copie du document actif dans un répertoire pré-défini.
La raison étant que ces fichiers doivent être officiellement stockés sur un partage commun à beaucoup d’utilisateurs et que je souhaite faire une copie sur ma partition au cas où …
Tout semblait parfaitement fonctionner, mais arès plusieurs mois de fonctionnement, suite à une erreur, j’ai voulu récupérer une copie d’un fichier Word et …
… j’ai constaté que pour toutes les copies des documents word, il n’enregistrait que le modèle du document et rien de son contenu. Je me suis donc retrouvé chocolat.
En approfondissant, j’ai compris ce qui se passe. Mais je n’ai aucune idée de comment résoudre ceci.
A l’origine, j’ai créé un modèle de doucument contenant la macro (.dot). J’utilise ce modèle depuis lequel je créé mon “nouveau” document. Ensuite je sauve ce nouveau document sous un nouveau nom (.doc).
Lorsque je ré-ouvre ce nouveau document et que j’ouvre l’éditeur vba, je constate que pour lui, il y a 2 documents d’ouverts :
- Mon “nouveau” document
- Le modèle dont je suis parti
Et la macro ne se trouve pas dans le “nouveau” document, mais uniquement dans le modèle.
Histoire d’être plus clair, voici une illustration de l’éditeur lorsqu’à l’ouverture de word, j’ouvre uniquement le fichier “Essai.doc” et l’éditeur vba :
Ci dessous le code de ma macro. Quelqu’un voit-il comment corriger le problème ?
J’insiste juste sur le fait que la macro doit faire une copie de l’original (car j’ai la mauvaise habitude de sauver mes fichiers au moment où je les ferme lorsqu’il m’ouvre la boite de dialogue “ce fichier a été modifié, voulez-vous l’enregistrer”).
Merci d’avance pour votre aide.
Fab
Dans ThisDocument :
Private Sub Document_Close()
Dim Confirmation As Long
’ Quitte la macro si je ne suis pas l’utilisateur
If Environ(“UserName”) <> “Fab117” Then Exit Sub
nom = ActiveDocument.Name
’ Demande s’il faut enregistrer les modifications
Confirmation = MsgBox("Voulez vous enregistrer une copie du fichier " & nom & " ? ", vbYesNo)
If Confirmation = vbYes Then
ThisDocument.Save
’ Fait une copie
Dossier = "C:\Fab\Copie des documents "
Count = Len(ActiveDocument.Name)
nom = Left(ActiveDocument.Name, Count - 4)
strDate = Format(Date, “dd-mm-yy”) & " - " & Format(Time, “h-mm-ss”)
ThisDocument.SaveAs FileName:=Dossier & nom & " - " & strDate & “.doc”
End If
End Sub