Bonjour,
Je débute avec vba. J'aimerais remplir des signets qui sont dans un document word et enregistrer le document sous format pdf. S'il vous plaît aider moi. Voici le code
![]()
Bonjour,
Je débute avec vba. J'aimerais remplir des signets qui sont dans un document word et enregistrer le document sous format pdf. S'il vous plaît aider moi. Voici le code
![]()
Deux remarque sur la forme de ta demande :
Si c'est une question sur Word, tu aurais du la placer dans la rubrique VBA Word.
Il est peut pratique d'avoir un code sous forme d'image (on est obligé de le retaper). Tu devrais plutôt le copier sous forme de texte, de préférence avec des balises CODE (l'icone # de l'éditeur du forum).
[QUOTE=sn1girlpower;10272918]Bonjour,
Je débute avec vba. J'aimerais remplir des signets qui sont dans un document word et enregistrer le document sous format pdf. S'il vous plaît aider moi. Voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Sub Export_Word() Application.DisplayAlerts = False Dim Doc_origine As String, Doc_save As String Dim WordApp As Object Dim WordDoc As Object Doc_origine = ActiveWorkbook.Path & "\Contrat_sous_traitant.docx" Date_F = Format(Date, "ddmmYYYY_") 'Doc_origine = ActiveWorkbook.Path & "\toto.docx" ' Doc_save = ActiveWorkbook.Path & "\toto_dossier" & Sheets("Feuil1").Range("A1").Text & ".docx" Set WordApp = CreateObject("word.application") Set WordDoc = WordApp.Documents.Open(Doc_origine, ReadOnly:=False) ' WordApp.Visible = False WordDoc.Bookmarks("toto").Range.Text = Cells(6, 1) WordDoc.Bookmarks("toto").Range.Text = Cells(6, 2) WordApp.Visible = True 'adaptez le nom de la feuille With Worksheets("Feuil1") Doc_name = "\" & "toto_" & Date_F & .Range("A6") Doc_rep = ActiveWorkbook.Path & "\toto" Doc_save = Doc_rep & Doc_name .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Doc_name, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False End With 'objWordApp.ActiveDocument.SaveAs2 Doc_save ' WordDoc.Application.ActiveDocument.SaveAs Doc_save 'WordApp.Application.Quit 'WordDoc.PrintOut WordDoc.Close True End Sub
Je n'ai pas analyser ton code en détail mais j'ai quand même remarqué quelques trucs qui piquent les yeux.
Là, tu remplaces le contenu du signet toto par le contenu de la cellule A6, puis, juste après, tu remplaces ce même signet par le contenu de B6.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 WordDoc.Bookmarks("toto").Range.Text = Cells(6, 1) WordDoc.Bookmarks("toto").Range.Text = Cells(6, 2)
Le second va forcément écraser le premier rendant la première ligne inutile.
Si tu veux mettre les deux valeurs dans le signet, il faudrait écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part WordDoc.Bookmarks("toto").Range.Text = Cells(6, 1) & Cells(6, 2)Le "." qui débute cette instruction fait référence à With Worksheets("Feuil1"), ce qui signifie que c'est ton tableau Excel que tu essayes d'exporter en PDF et non le document Word comme tu le décris dans ton explication.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Doc_name, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Merci pour votre réponse j'ai corrigé le code et j'ai erreur 5941
Je précise le signet existe
Code : Sélectionner tout - Visualiser dans une fenêtre à part WordDoc.Bookmarks("Num").Range.Text = Cells(6, 1)
Merci de m'aider
Indiquer le message d'erreur serait plus parlant.
Vérifie-le en mettant juste avant cette ligne :
Et en regardant si quelque chose apparait dans la fenêtre d'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Debug.Print WordDoc.Bookmarks("Num").Name
Bonjour,
Ou bien, dans ton document Word, tu fais F5 et tu choisis le signet. Si tu l'atteins, il existe. Sinon…
Partager