Table des illustrations sous forme de tableau
Résolu/Fermé
A voir également:
- Table des illustrations sous forme de tableau
- Table ascii - Guide
- Tableau croisé dynamique - Guide
- Table des matières word - Guide
- Mise en forme tableau word - Guide
- Mise en forme conditionnelle excel - Guide
2 réponses
m@rina
Messages postés
21200
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
20 décembre 2024
11 370
5 juin 2018 à 14:51
5 juin 2018 à 14:51
Bonjour,
J'ai peut être ta solution ici :
https://faqword.com/index.php/word/references/770-comment-faire-une-table-des-matieres-dans-un-tableau-que-lon-pourrait-classer-par-ordre-alpha
m@rina
J'ai peut être ta solution ici :
https://faqword.com/index.php/word/references/770-comment-faire-une-table-des-matieres-dans-un-tableau-que-lon-pourrait-classer-par-ordre-alpha
m@rina
m@rina
Messages postés
21200
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
20 décembre 2024
11 370
5 juin 2018 à 23:39
5 juin 2018 à 23:39
Bonjour,
Ah ben oui, faut modifier la macro, mais je ne sais pas comment est fait ton document. Ci-dessous la macro pour des légendes "classiques" qui utilisent l'étiquette Figure et le style Légende. Remplacer éventuellement Figure par le nom de l'étiquette. Par ailleurs j'ai supprimé la ligne de code qui trie les légendes par ordre alpha.
Ah ben oui, faut modifier la macro, mais je ne sais pas comment est fait ton document. Ci-dessous la macro pour des légendes "classiques" qui utilisent l'étiquette Figure et le style Légende. Remplacer éventuellement Figure par le nom de l'étiquette. Par ailleurs j'ai supprimé la ligne de code qui trie les légendes par ordre alpha.
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
Nombre = Nombre + 1
End If
Next
For Numéro = 1 To Nombre
With Selection
.InsertCrossReference ReferenceType:="Figure", ReferenceKind:= _
wdOnlyCaptionText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Figure", 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
.Columns.PreferredWidthType = wdPreferredWidthPercent
.Columns.PreferredWidth = 90
End With
End Sub
Bonjour,
Merci. J'ai encore un problème sur la macro.
J'ai remplacé Figure par le nom de mon étiquette Ecart n° donc ça donne :
InsertCrossReference ReferenceType:="Ecart n°", ReferenceKind:= _
wdOnlyCaptionText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Ecart n°", ReferenceKind:= _
wdPageNumber, ReferenceItem:=Numéro, InsertAsHyperlink:=True
Lorsque j'éxécute la macro, ça met en surbrillance le texte et une boite de dialogue indique erreur d'éxècution '4198' la commande a échoué.
Je ne sais pas où est le pb ...
Je te remercie du temps que tu prends pour me répondre en tout cas !
Merci. J'ai encore un problème sur la macro.
J'ai remplacé Figure par le nom de mon étiquette Ecart n° donc ça donne :
InsertCrossReference ReferenceType:="Ecart n°", ReferenceKind:= _
wdOnlyCaptionText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Ecart n°", ReferenceKind:= _
wdPageNumber, ReferenceItem:=Numéro, InsertAsHyperlink:=True
Lorsque j'éxécute la macro, ça met en surbrillance le texte et une boite de dialogue indique erreur d'éxècution '4198' la commande a échoué.
Je ne sais pas où est le pb ...
Je te remercie du temps que tu prends pour me répondre en tout cas !
Je pense avoir compris pourquoi ça bug. Je n'ai vraiment aucune idée de comment passer outre mais je crois avoir compris.
Sur mon rapport j'ai 5 écarts (ce n'est pas beaucoup, pour une fois ...)
J'ai modifié la macro pour tester. :
IIf Paragraphe.Style = "Légende" Then
Nombre = Nombre + 1
End If
Next
For Numéro = 1 To 5
With Selection
.InsertCrossReference ReferenceType:="Figure", ReferenceKind:= _
wdOnlyCaptionText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Figure", ReferenceKind:= _
wdPageNumber, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeParagraph
End With
Next Numéro
Comme cela, ça marche sans problème, mes écarts apparaissent dans un tableau avec les pages dans la colonne à coté. Mais avec la macro d'origine, donc avec "Nombre" au lieu de "5", ça bug. Je ne comprends pas.
Je te remercie pour ton aide si tu comprends l'erreur ...
Sur mon rapport j'ai 5 écarts (ce n'est pas beaucoup, pour une fois ...)
J'ai modifié la macro pour tester. :
IIf Paragraphe.Style = "Légende" Then
Nombre = Nombre + 1
End If
Next
For Numéro = 1 To 5
With Selection
.InsertCrossReference ReferenceType:="Figure", ReferenceKind:= _
wdOnlyCaptionText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Figure", ReferenceKind:= _
wdPageNumber, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeParagraph
End With
Next Numéro
Comme cela, ça marche sans problème, mes écarts apparaissent dans un tableau avec les pages dans la colonne à coté. Mais avec la macro d'origine, donc avec "Nombre" au lieu de "5", ça bug. Je ne comprends pas.
Je te remercie pour ton aide si tu comprends l'erreur ...
m@rina
Messages postés
21200
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
20 décembre 2024
11 370
6 juin 2018 à 14:55
6 juin 2018 à 14:55
Bonjour,
Tu dois avoir un ou des paragraphes avec le style Légende qui n'utilise pas l'étiquette "écart n°".
On peut gérer l'erreur, mais le mieux c'est aussi de tester si le paragraphe légendé contient bien ton étiquette. Ainsi tu peux avoir plusieurs types d'étiquettes dans le document.
Comme je le dis souvent, il faut connaître le document pour écrire une macro...
Donc, à la place de :
Tu mets :
m@rina
Tu dois avoir un ou des paragraphes avec le style Légende qui n'utilise pas l'étiquette "écart n°".
On peut gérer l'erreur, mais le mieux c'est aussi de tester si le paragraphe légendé contient bien ton étiquette. Ainsi tu peux avoir plusieurs types d'étiquettes dans le document.
Comme je le dis souvent, il faut connaître le document pour écrire une macro...
Donc, à la place de :
If Paragraphe.Style = "Légende" Then
Nombre = Nombre + 1
End If
Tu mets :
If Paragraphe.Style = "Légende" Then
If InStr(Paragraphe, "Ecart n°") > 0 Then
Nombre = Nombre + 1
End If
End If
m@rina
5 juin 2018 à 15:37
Merci pour ta réponse.
Dans mes recherches, je suis tombé sur ce post mais impossible de le modifier pour qu'il s'adapte à mon document.
Je n'arrive pas à faire que ça sélectionne les étiquettes Ecart n° de mes légendes ...
J'ai essayé d'appliquer le style titre 9 que je n'utilise jamais et modifier ainsi les lignes VBA mais idem, ça ne sélectionne pas mes éléments. Je ne comprends pas.
Oui je suis vraiment mauvais en macro ... ^^
Modifié le 5 juin 2018 à 15:47
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 = "Légende" Then
Nombre = Nombre + 1
End If
Next
For Numéro = 1 To Nombre
With Selection
.InsertCrossReference ReferenceType:="Ecart n°", ReferenceKind:= _
wdContentText, ReferenceItem:=Numéro, InsertAsHyperlink:=True
.TypeText Text:=vbTab
.InsertCrossReference ReferenceType:="Ecart n°", 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