user_mobilelogo

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

Aujourd'hui2480
Hier2580
Cette semaine10380
Ce mois68160
Total depuis 200411582429

14
visiteurs actuellement en ligne

28 mai 2020