VBA Excel word enregistrer le doc obtenu depuis mon modele sans l'ecraser
Bonjour,
J'ai créée une macro qui :
1) depuis EXCEL complète deux feuilles de mon classeur à l'aide des infos saisie dans une autre feuille
2) génère un document Word (ouvert depuis un modèle) et complète les signets.
Mon problème est que je veux que le doc Word qui s'ouvre s'enregistre tout de suite à un emplacement précis et avec un nom qui reprenne trois signets insérés (Civilité1, NOM1, Prénom1).
Il s'agit en fait d'un contrat de location et en enregistrant j'aimerais que le doc s'appelle contrat de MMEXXZZ......en reprenant les signet du document généré.
et surtout garder intact mon modèle de base (depuis lequel la macro s'exécute) sans avoir la possibilité d'enregistrer les modifications.
Voici ce que j'ai actuellement (et qui ne va pas du coup) :
Application.WindowState = xlMinimized
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open("CHEMIN\NOM DE FICHIER.dotm") 'ouvre document Word depuis le modèle existant
On Error Resume Next
Application.DisplayAlerts = False
With WordDoc
.Bookmarks("Civilité").Range.Text = [C4].Text
.Bookmarks("NOM").Range.Text = [C7].Text
.Bookmarks("Prénom").Range.Text = [C10].Text
.Bookmarks("Adresse1").Range.Text = [C13].Text
.Bookmarks("Adresse1").Range.Text = [C16].Text
.Bookmarks("CodePostal").Range.Text = [C19].Text
.Bookmarks("Ville").Range.Text = [C22].Text
.Bookmarks("BoxNo").Range.Text = [G13].Text
.Bookmarks("M2").Range.Text = [G16].Text
.Bookmarks("DébutLoc").Range.Text = [G19].Text
.Bookmarks("FinLoc").Range.Text = [G22].Text
.Bookmarks("Loyer").Range.Text = [J4].Text
.Bookmarks("CautionLoyer").Range.Text = [J10].Text
.Bookmarks("Civilité1").Range.Text = [C4].Text
.Bookmarks("NOM1").Range.Text = [C7].Text
.Bookmarks("Prénom1").Range.Text = [C10].Text
'.Save
End With
Merci par avance pour votre aide !
Bonjour,
A tester et à adapter :
Option Explicit
Sub Test()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim CheminModele As String, CheminSauvegarde As String, NomFichier As String
CheminModele = "D:\Documents\VBA Word\Modèles\Présentation outils.dotm"
CheminSauvegarde = ActiveWorkbook.Path
With ActiveSheet
NomFichier = .Range("C4") & " " & .Range("C7") & " " & .Range("C10")
End With
Set WordApp = CreateObject("Word.Application")
With WordApp
.Visible = True
Set WordDoc = .Documents.Add(Template:=CheminModele)
End With
With WordDoc
.SaveAs2 Filename:=CheminSauvegarde & "\" & NomFichier, FileFormat:=12
' Suite du code
' .....
End With
WordDoc.Close True
WordApp.Quit
Set WordApp = Nothing: Set WordDoc = Nothing
End Sub
Merci beaucoup Eric Kergresse, c'est exactement ce qu'il me fallait !