Rectifier une lettre sous Word sans toucher au modèle de base

BenHarber

XLDnaute Occasionnel
J’ai trouvé sur ce sîte (que l’auteur dont j’ai oublié le nom m’excuse !) les lignes de commande VBA qui me permettent à partir d’Excel, d’ouvrir un document Word (en l’occurrence, c’est une lettre-type), d’y coller différentes valeurs sur des signets préalablement définis, de l’imprimer et de fermer le document Word sans enregistrer les modifications (de façon à ce que cette lettre-modèle puisse être utilisée la fois suivante ; sinon les signets « sautent »)

Ce code est du type :
Dim WordDoc As Word.Document
Set WordDoc = WordApp.Documents.Open("cheminDuFichier\nomDuFichier.doc")
WordDoc.Bookmarks("Nom").Range.Text = Cells(maCel.Row, 6)
WordDoc.Bookmarks("Prenom").Range.Text = Cells(maCel.Row, 7)
WordDoc.PrintOut
Application.Wait Now + TimeValue("00:00:02")
WordDoc.Close False 'ferme le document word SANS sauvegarder les données
WordApp.Quit 'ferme la session Word

Néanmoins, « mes » utilisateurs souhaitent quelquefois rectifier leur lettre avant impression (personnalisation oblige en fonction du destinataire ! Personnalisation a priori difficilement « modelisable ») : j’ai donc supprimé les 4 dernières lignes de code.
Hélas, régulièrement, un utilisateur enregistre le modèle qu’ils viennent de rectifier…Ce modèle est alors à reconstruire (définition des signets !).

Quelqu’un entreverrait-il une astuce qui me permette de faire une copie du document Word avant (ou après ?) son ouverture de façon à ce que le modèle ne soit pas touché ? Quel en serait le code ?
PS : j’ai essayé l’enregistrement d’un modèle Word en « .dot » sur le réseau mais la commande « Set WordDoc = WordApp.Documents.Open("cheminDuFichier\nomDuFichier.dot") » me fait ouvrir directement le fichier « .dot » et non une copie de celui-ci dans un nouveau document.

Merci d’avance, ne serait-ce que d’être parvenu à la fin de ce post ! !

Cordialement,
BenHarber
 

michel_m

XLDnaute Accro
Re : Rectifier une lettre sous Word sans toucher au modèle de base

Bonjour,
ci dessous, exemple tiré de mon grenier perso

' lancement de Word
' gestion de l'erreur "activeX" d'après archives MPFE Laurent Longre
On Error Resume Next
Set Cible = CreateObject(class:="Word.Application")
On Error GoTo 0
If Cible Is Nothing Then
Set Cible = New Word.Application
End If

'On est maintenant dans Word
With Cible
.Documents.Add Template:= _
"C:\Documents and Settings\michel\Application Data\Microsoft\Modèles\rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.dot"
....tes instructions
End with

A+
Michel_M
 

BenHarber

XLDnaute Occasionnel
Re : Rectifier une lettre sous Word sans toucher au modèle de base

Michel,
Bravo, c'est exactement ça ! (...et l'avantage avec ton e-grenier, c'est que je n'ai pas eu besoin de faire la poussière avant de me servir de ton code !)

Merci encore, voisin départemental.

Cordialement,
BenHarber
 

Statistiques des forums

Discussions
312 380
Messages
2 087 799
Membres
103 664
dernier inscrit
wolvi71