Fonction insertbreak
Salut à tous,
Je cherche à utiliser la fonction insertbreak pour faire des sauts de lignes dans word après chaque signet que je crée.
N'ayant jamais utilisé la fonction, j'ai essayé sur le vba de word avant de l'incorporer dans celui de mon fichier principal. J'ai fais ce que j'ai voulu avec ce bout de code :
Sub test()
Dim signet As Variant
ActiveDocument.Bookmarks("cible").Select
Selection.InsertBreak Type:=wdPageBreak
For I = 1 To 5
Selection.InsertBreak Type:=wdLineBreak
ActiveDocument.Bookmarks.Add Name:="signet" & I
Next I
For x = 1 To 5
ActiveDocument.Bookmarks("signet" & x).Range = "ça marche" & x
Next x
End SubEn gros, à partir d'un signet déjà présent dans le document word, ça me créée 5 autres signets sur 5 lignes différentes, ces 5 signets sont ensuite remplacé par du texte.
Mon problème est que quand je l'insère dans me code principal ça ne fonctionne plus, les signets sont créés au même endroit. Voici le code en question :
Sub Excel_vers_Word()
Dim WordApp As Object, WordDoc As Object
Dim Ndf As String, NDF2 As String, Rep As String
Dim vaData As Variant
Dim tbl As Word.table
Dim table As Variant
Ndf = ActiveWorkbook.Path & "\TrameRetraite.docx" ' le doc modèle est placé dans le même dossier que le xlsm
Rep = ActiveWorkbook.Path & "\Compte rendus\" ' pour enregistrer le doc résultat dans un sous-dossier
If Not Exist_Fichier(Ndf) Then ' vérifie l'existence du doc modèle
MsgBox "Document 'modeleword.docx' manquant", vbExclamation, "ERREUR"
Else
If Not Exist_Rep(Rep) Then MkDir Rep ' vérifie l'existence du sous-dossier et le crée éventuellement
NDF2 = Rep & InputBox("Quel est le nom de votre document ?", "Nom du document") & ".docx" ' pour enregistrer le résultat
On Error Resume Next
If Fichier_IsOpen(Ndf) Then ' vérifie si le modèle est déjà ouvert
Set WordApp = GetObject(, "Word.Application")
Set WordDoc = WordApp.Documents(Ndf)
Else ' sinon ouvre l'appli word et le modèle
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(Ndf, ReadOnly:=False)
End If
'Sheets("Trimestres").Range("c:e").EntireColumn.Hidden = True
'Sheets("Trimestres").Range("i:i").EntireColumn.Hidden = True
With WordApp
.Visible = False
'Ici il y a tout une autre partie du code
End With
WordDoc.Bookmarks("Spawn_hypothèse").Select
table = Array("B24", "B17", "B4:J13", "B2")
Selection.InsertBreak wdPageBreak
For I = 9 To Worksheets.Count
Selection.InsertBreak Type:=wdLineBreak
For x = 0 To 3
Selection.InsertBreak Type:=wdLineBreak
WordDoc.Bookmarks.Add Name:="signet" & x
Next x
For y = 0 To 3
Sheets(I).Range(table(y)).Copy
WordDoc.Bookmarks("signet" & y).Range.PasteSpecial DataType:=wdPasteRTF
Next y
Next I
WordDoc.Application.ActiveDocument.SaveAs NDF2 ' enregistre le doc complété
WordApp.Visible = True ' ou bien : WordApp.Application.Quit ' pour fermer après remplissage
Set WordDoc = Nothing
Set WordApp = Nothing
MsgBox "Document word prêt"
End If
End SubAvec ce code les signets sont créés au même endroit que le signet original, je pense que c'est la fonction insertbreak qui ne fonction pas.
J'ai trouvé, il fallait que j'ajoute wordApp devant mon selection.
WordApp.Selection.InsertBreak Type:=wdLineBreak