Je ne sais pas comment cela fonctionnerait avec .net, mais voici une macro qui expose l'idée. Le modèle d'objet a tendance à être le même, donc je ne pense pas qu'il sera difficile de traduire en C# à partir de VBA.
Sub BookmarksInTables()
Dim aTable As Table
Dim aBookmark As Bookmark
For Each aBookmark In ActiveDocument.Bookmarks
For Each aTable In ActiveDocument.Tables
'If start of book mark is inside the table range or
' the end of a book mark is inside the table range then YES!
If (aBookmark.Range.Start >= aTable.Range.Start _
And aBookmark.Range.Start <= aTable.Range.End) _
Or (aBookmark.Range.End >= aTable.Range.Start _
And aBookmark.Range.End <= aTable.Range.End) Then
MsgBox aBookmark.Name + " is inside a table"
Else
MsgBox aBookmark.Name + " is not inside a table"
End If
Next
Next
End Sub
Il fonctionne en vérifiant si le début ou la fin est à l'intérieur de la gamme de chaque table du signet (dans le document entier). Cela fonctionnera si une partie du signet est à l'intérieur d'une table.
Alternativement, si vous besoin de savoir si le signet est exclusivement dans une table que vous voulez vérifier le de signet pour le début à être supérieur ou égal au départ et final de la marque de la table être inférieur ou égal à la fin de la table.
--Kris
Nice. Je vais essayer (après le déjeuner). – Craig