Recherche

Il n'est pas prévu dans Word d'insérer une table des matières dans un tableau. On pourrait la transformer avant en texte brut, et la convertir en tableau mais dans ce cas on perdrait bien sûr l'avantage des liens hypertextes.

Chaque titre du document doit bien entendu être rédigé avec les styles de titre. La table des matières automatique permet d'obtenir des liens hypertextes pour se rendre directement sur l'article.

La solution est donc d'insérer non pas une table des matières mais une série de renvois sur chaque Titre. Cette méthode serait longue et fastidieuse si on la fait manuellement. Voici donc une macro qui va lister ces renvois, et transformer la liste en tableau. Cet exemple crée un tableau de 4 colonnes, la première pour les numéros, la seconde pour les titres eux-mêmes, la troisième pour le numéro de page, et la dernière qui reste vide et qui pourra être utilisé pour vos commentaires. La largeur de la dernière colonne est de 4 cm, vous pouvez adapter.

Important : Notez néanmoins qu'il ne s'agit plus d'une table des matières selon la définition wordienne mais uniquement de liens. Cela signifie qu'en cas de modifications dans vos titres, vous pourrez mettre les liens à jour (Sélection du tableau puis F9), mais en cas d'ajout ou de suppression de titres, ce ne sera pas possible. Il faudra relancer la macro au risque de perdre vos textes écrits manuellement.

Sub tm_tablo()
'macro écrite par m@rina
Dim Paragraphe As Paragraph, Nombre, Numéro
Nombre = 0
For Each Paragraphe In ActiveDocument.Paragraphs

If Left(Paragraphe.Style, 5= "Titre" Then
Nombre = Nombre + 1
End If
Next
For Numéro = 1 To Nombre
With Selection
.InsertCrossReference ReferenceType:="Élément numéroté", _
ReferenceKind:=wdNumberRelativeContext, ReferenceItem:=Numéro, _
InsertAsHyperlink:=True, IncludePosition:=False, SeparateNumbers:=False, _
SeparatorString:=" "
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Titre", ReferenceKind:= _
wdContentText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Titre", ReferenceKind:= _
wdPageNumber, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeParagraph
End With
Next Numéro

With Selection
.Extend
.MoveUp Unit:=wdLine, Count:=Nombre
.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=4, _
NumRows:=Nombre, AutoFitBehavior:=wdAutoFitContent
.Tables(1).AutoFitBehavior (wdAutoFitWindow)
.Columns.PreferredWidthType = wdPreferredWidthAuto
.Columns(4).PreferredWidth = CentimetersToPoints(4)

End With

End Sub
 

 

Statistiques

France 76,0% France
Canada 7,9% Canada
États-Unis d'Amérique 4,7% États-Unis d'Amérique

Total:

66

Pays
018274371
Aujourd'hui: 11
Hier: 145
Cette semaine: 694
Semaine dernière: 783
Ce mois: 2.633