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
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