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

Rechercher des sujets similaires à "remplacer contenu signet word via vba"