Table des illustrations sous forme de tableau
Résolu
lc1612
-
lc1612 -
lc1612 -
Bonjour,
Je rédige actuellement un rapport.
Dès qu'une chose est non conforme, je la rédige sous forme d'écart
Exemple :
Ecart n°1 : bla bla bla bla est non conforme ...
Pour avoir la numérotation automatique, j'ai créé une étiquette dans les légendes. Cette étiquette s'appelle Ecart n°.
A la fin de mon document, je souhaite présenter l'ensemble des écarts sous forme de tableau avec un colonne présentant le texte de l'écart et un autre colonne correspondant au numéro de page.
J'ai tenté la table des illustrations mais ce n'est pas un tableau. Alors oui je pourrais copier la table et la copier dans excel pour séparer les colonnes mais je souhaiterais pouvoir le faire directement sur Word, je pense que c'est possible.
Je vous remercie vivement pour votre aide.
PS : Je suis novice voire bien en dessous de novice en VBA et macro ...
Je rédige actuellement un rapport.
Dès qu'une chose est non conforme, je la rédige sous forme d'écart
Exemple :
Ecart n°1 : bla bla bla bla est non conforme ...
Pour avoir la numérotation automatique, j'ai créé une étiquette dans les légendes. Cette étiquette s'appelle Ecart n°.
A la fin de mon document, je souhaite présenter l'ensemble des écarts sous forme de tableau avec un colonne présentant le texte de l'écart et un autre colonne correspondant au numéro de page.
J'ai tenté la table des illustrations mais ce n'est pas un tableau. Alors oui je pourrais copier la table et la copier dans excel pour séparer les colonnes mais je souhaiterais pouvoir le faire directement sur Word, je pense que c'est possible.
Je vous remercie vivement pour votre aide.
PS : Je suis novice voire bien en dessous de novice en VBA et macro ...
A voir également:
- Table des illustrations sous forme de tableau
- Tableau word - Guide
- Table des matières word - Guide
- Table ascii - Guide
- Dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. - Guide
- Mise en forme conditionnelle excel - Guide
2 réponses
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
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 ...
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
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 ... ^^
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