Soit un document qui liste une série d'astuces. Chaque titre d'astuce est rédigé avec le style Titre 1. La table des matières automatique permet d'obtenir des liens hypertextes pour se rendre directement sur l'article. Il serait intéressant que cette table des matières soit organisée par ordre alphabétique afin de s'y retrouver plus rapidement.

Une table des matières suit l'ordre logique des titres d'un document. On ne peut donc pas la trier par ordre alphabétique. Ou bien, il faudrait la transformer avant en texte brut, mais dans ce cas on perdrait bien sûr l'avantage des liens hypertextes.

La solution serait 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, de manière à pouvoir faire un tri aisément, soit sur le titre des astuces, soit sur la pagination.

 

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

If Paragraphe.Style = "Titre 1" Then
Nombre = Nombre + 1
End If
Next
For Numéro = 1 To Nombre
With Selection
.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:=2, _
NumRows:=Nombre, AutoFitBehavior:=wdAutoFitContent
.Sort ExcludeHeader:=False, FieldNumber:="Colonne 1", _
SortFieldType:=wdSortFieldAlphanumeric
.Columns.PreferredWidthType = wdPreferredWidthPercent
.Columns.PreferredWidth = 90

End With

End Sub

 

 

Si l'on ajoute des astuces, il faudra supprimer le tableau, et relancer la macro.

Rappel : la mise à jour se fait avec F9

 

Statistiques

Aujourd'hui30
Hier2489
Cette semaine2519
Total depuis 20049477779

5
visiteurs actuellement en ligne