Remplacer le contenu d'un signet WORD via VBA Excel
Bonjour à tous,
J'ai un programme en cours de création et pour utilisation commune pour le boulot, j'ai besoin de faire une liaison entre Excel et Word. Et plus précisément de remplir automatiquement un doc Word avec des données Excel.
Pour le remplissage initial, pas de problème, j'utilise ce code qui fonctionne bien :
Sub Test()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte
Set WordApp = CreateObject("word.application")
Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\Exemple\" & "Test.docx") 'ouvre le document Word
WordApp.Visible = False
WordDoc.Bookmarks("Signet1").Range.Text = Cells(5, 3)
WordDoc.Bookmarks("Signet2").Range.Text = Cells(11, 3)
WordApp.Visible = True
End Sub
Mais là où ça devient "drôle" si je peux me permettre, c'est que le fichier Excel est amené à changer de données régulièrement et donc il va falloir mettre à jour les données également sous le doc WORD.
Et c'est là où je coince un poil.
Si je répète le code comme tel, il me copie les données derrières les anciennes. Si j'utilise
WordDoc.Bookmarks("Signet2").Delete
il me supprime les signets et ne les trouve plus pour le reste de la procédure, ce qui est logique.
Donc si vous avez une idée pour supprimer juste le contenu des signets, et non ceux-ci, je suis preneur
Bonjour,
Un solution consiste à garder un doc original (signets vides) en tant que modèle et à chaque remplissage on enregistre le doc avec un nouveau nom (éventuellement dans un sous-dossier), du genre :
fichier2=ThisWorkbook.Path & "\Exemple\DOC\" & "Test" & format(now,"yyyyMMdd") & ".docx"
WordDoc.Application.ActiveDocument.SaveAs fichier2
WordApp.Visible = True
' ...
Pierre
Bonjour pierrep56,
Merci pour ta réponse. J'y pensais aussi à vrai dire de faire un doc original avec signets vide et faire des sauvegardes. J'essayais de voir s'il y avait une autre solution
Mais je vais tester celle là. Je vais adapter et en fonction, faire des tests d'ci demain matin et je reviendrai vers toi si ça pose soucis.
C'est bon, j'ai testé une ou deux solutions et celle que je vais retenir c'est de créer un joli pdf à partir du doc original Word sans sauvegarder celui-ci avec ce code :
Sub Test()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte
Dim LaDate As String, LaFormation As String, LeRep As String
LaDate = Format(Date, "yyyymmdd")
LaFormation = Sheets("FICHE_PDF").Range("C11").Value
LeRep = ThisWorkbook.Path & "\Exemple\" ' à adapter
Set WordApp = CreateObject("word.application")
Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\Exemple\" & "Test.docx") 'ouvre le document Word
WordApp.Visible = False
WordDoc.Bookmarks("Signet1").Range.Text = Cells(5, 3)
WordDoc.Bookmarks("Signet2").Range.Text = Cells(11, 3)
WordApp.Visible = True
WordDoc.ExportAsFixedFormat OutputFileName:= _
LeRep & LaDate & "_" & LaFormation & ".pdf", ExportFormat:= _
17, OpenAfterExport:=True, OptimizeFor:= _
0, Range:=0, From:=1, To:=1, _
Item:=0, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=0, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
WordDoc.Close SaveChanges:=False
WordApp.Quit
End Sub
Merci encore pour l'aide et bonne journée