Remplace signet word via un programme VBA Excel

Bonjour,

je souhaite à partir d'un code vba aller chercher une valeur dans ma feuille excel. cette valeur sera ensuite écrite à la place d'un signet d'un document word que j'ouvre avec le meme programme vba.

Voici le code que j'ai piqué sur des forums, que j'ai adapté à mon projet et qui a l'air de fonctionner selon les dires mais il ne marche pas trés bien dans mon cas. Il m'ouvre le doucument word mais ne remplace pas du tout le signet à la valeur trouvée.

Public Function RemplirSignet(mon_signet As String, mon_texte As String, WordDoc as Object)

' Remplace mon_signet par mon_texte

Dim Place As Long

Place = ActiveDocument.Bookmarks(mon_signet).Range.Start

ActiveDocument.Bookmarks(mon_signet).Range.Text = mon_texte

ActiveDocument.Bookmarks.Add Name:=mon_signet, Range:=ActiveDocument.Range(Place, Place + Len(mon_texte))

End Function

Sub Export_word()

Dim WordApp As Object, WordDoc As Object

' Ouvrir le document Word

Set WordApp = CreateObject("Word.Application")

WordApp.Visible = True

WordApp.Documents.Open "D:/MacroV2/Fiche_Test.docx"

'Remplacer le signer dans le document Word

RemplirSignet "S3", Sheets("Feuil1").Range("B1").Value, WordDoc

End Sub

En executant le programme, le document Fiche_Test s'ouvre mais j'ai une erreur d'exécution 91, variable objet ou variable de bloc with non défini à la ligne suivante : Place = WordDoc.Bookmarks(S).Range.Start .

Merci par avance pour votre aide.

PS : Je suis un vrai debutant en programmation vba.

Bonjour,

Une piste à adapter :

Sub Test()

    Dim AppWord As Object
    Dim Doc As Object

    'crée une instance de Word
    Set AppWord = CreateObject("Word.Application")

    With AppWord

        .Visible = True

        'ouvre un document
        Set Doc = .Documents.Open("D:/MacroV2/Fiche_Test.docx")

        With Doc

            '*** faire le choix entre...

            '...remplacer les signets par les textes des cellules A1 et B1
            .Bookmarks("Monsignet1").Range.Text = Range("A1")
            .Bookmarks("Monsignet2").Range.Text = Range("B1")

            '...insèrer les textes des cellules A1 et B1 après les signets
'            .Bookmarks("Monsignet1").Range.InsertAfter Range("A1")
'            .Bookmarks("Monsignet2").Range.InsertAfter Range("B1")

        End With

    End With

End Sub

Merci Theze ton code marche à la perfection.

Maintenant, je veux enregistrer le document en formant .pdf dans le même répertoire que mon doc word.

Si t'aurais une piste n'hésite pas.

Merci d'avance.

Bonne soirée à toi

Bonjour,

Avec l'exportation au format pdf dans le même dossier :

Sub Test()

    Dim AppWord As Object
    Dim Doc As Object

    'crée une instance de Word
    Set AppWord = CreateObject("Word.Application")

    With AppWord

        .Visible = True

        'ouvre un document
        Set Doc = .Documents.Open("D:/MacroV2/Fiche_Test.docx")

        With Doc

            '*** faire le choix entre...

            '...remplacer les signets par les textes des cellules A1 et B1
            .Bookmarks("Monsignet1").Range.Text = Range("A1")
            .Bookmarks("Monsignet2").Range.Text = Range("B1")

            '...insèrer les textes des cellules A1 et B1 après les signets
'            .Bookmarks("Monsignet1").Range.InsertAfter Range("A1")
'            .Bookmarks("Monsignet2").Range.InsertAfter Range("B1")

            'export au format pdf
            .ExportAsFixedFormat "D:/MacroV2/Fiche_Test.pdf", 17 'wdExportFormatPDF = 17

        End With

    End With

End Sub

Bonjour,

Ca marche Theze encore une fois merci. Je crois que ce n'est plus nécessaire de l'enregistrer en pdf. Vu que l'utilisateur peut à tout moment modifier le document word. je m'explique ajouter un texte par exemple.

J'ai pensé à ouvrir le doc Fiche_Test avec le programme et l'enregistrer en format Now(), "yyyymmdd_hhmm.docx

Du coup il y ajoute ses modifications.

Je garde mon document d'origine de meme que mes SIGNEEEEEETTTTTTTS.

Merci ton code m'a vraiment aider.

Bonne journée à toi

Le code complet et ça marche parfaitement :

Sub Export_word()

Dim WordApp As Word.Application, WordDoc As Word.Document

Dim NDF As String

NDF = ActiveWorkbook.Path & "\" & "Fiche_Test" & Format(Now(), "yyyymmdd_hhmm")

On Error Resume Next

'crée une instance de Word

Set AppWord = CreateObject("Word.Application")

With AppWord

.Visible = True

'ouvre le document

Set WordDoc = .Documents.Open("E:/MacroV3/Fiche_Test.docx")

With WordDoc

'...remplacer les signets par les textes des cellules B1

.Bookmarks("S1").Range.Text = Range("B7")

.Bookmarks("S2").Range.Text = Range("B6")

.Bookmarks("S3").Range.Text = Range("B1")

.Bookmarks("S4").Range.Text = Range("B2")

.Bookmarks("S5").Range.Text = Range("B3")

.Bookmarks("S6").Range.Text = Range("B4")

.Bookmarks("S7").Range.Text = Range("B5")

.Bookmarks("S8").Range.Text = Range("B8")

.Bookmarks("S9").Range.Text = Range("B9")

'...Enregistrer mon doc Fiche_Test au format Now(), "yyyymmdd_hhmm")

WordDoc.SaveAs NDF

End With

End With

End Sub

Bonjour,

Content de t'avoir aidé

Rechercher des sujets similaires à "remplace signet word via programme vba"