Salut,
Première petite chose,
Dans cette déclaration :
Dim strMarks(), stVar() As String
stVar est bien un string, mais strMarks est un Variant.
La bonne méthode est
Dim strMarks() As String, stVar() As String
Dans le code
1 2 3 4 5 6 7 8 9
| If ActiveDocument.Bookmarks.Count > 0 Then
ReDim strMarks(ActiveDocument.Bookmarks.Count - 1)
cpt = 0
For Each bkMark In ActiveDocument.Bookmarks
strMarks(cpt) = bkMark
stVar(cpt) = ActiveDocument.Bookmarks(bkMark).Range.Text
cpt = cpt + 1
Next bkMark
End If |
ActiveDocument.Bookmarks(bkMark).Range.Text
Cette ligne pose un très gros problème.
On adresse un signet de cette façon.
ActiveDocument.Bookmarks(1).Range.Text
ActiveDocument.Bookmarks("MonPremierSignet").Range.Text
Mais de toute façon, comme nous somme dans une boucle, il n'est pas utile de passer par ActiveDocument....
Je ferais comme ça :
1 2 3 4 5 6 7
| Dim intBm As Integer
intBM = 0
For Each bkMark In ActiveDocument.Bookmarks
stVar(intBm) = bkMark.Range.Text
intBm = intBm + 1
Next bkMark |
Partager