Soit un document qui contient des illustrations, chacune d'elle étant légendée via la fonctionnalité Légende.

La table des illustrations automatique permet d'obtenir des liens hypertextes pour se rendre directement sur l'illustration. Vous souhaitez que cette table soit organisée en tableau, pour, par exemple, la classer par ordre alphabétique, ou pour tout autre raison.

Pour transformer cette table en tableau, il faudrait la transformer d'abord en texte brut, mais dans ce cas on perdrait bien entendu l'avantage des liens hypertextes et de la mise à jour automatique.

La solution serait d'insérer non pas une table des illustrations automatique mais une série de renvois sur chaque légende. Cette méthode serait longue et fastidieuse si on la fait manuellement. Voici donc une macro qui va lister ces légendes, et transformer la liste en tableau.

Cette macro fonctionne avec le style Légende (style par défaut des légendes) et l'étiquette Figure. Vous pourrez changer d'étiquette, si vous souhaitez par exemple la liste des tableaux, des photos, des équations, etc.

 

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

If Paragraphe.Style = "Légende" Then
If InStr(Paragraphe, "Figure"> 0 Then
Nombre = Nombre + 1
End If
End If
Next
For Numéro = 1 To Nombre
With Selection
.InsertCrossReference ReferenceType:="Figure", ReferenceKind:= _<br>wdOnlyCaptionText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Figure", ReferenceKind:= _<br>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, _<br>NumRows:=Nombre, AutoFitBehavior:=wdAutoFitContent
.Columns.PreferredWidthType = wdPreferredWidthPercent
.Columns.PreferredWidth = 90

End With

End Sub