OVH Cloud OVH Cloud

Lister les notes de bas de page en fin de document

10 réponses
Avatar
livevil
Bonjour,

J'ai inséré des notes de bas de page dans mon document et je
souhaiterais ajouter à la fin un index qui renvoie aux différentes pages
selon un ordre alphabétique des notes de bas de page (en plus clair, les
notes de bas de page sont des références bibliographiques, et je
voudrais mettre un index à la fin classé par auteur et non par numéro de
note, avec la page correspondante).

Sous word je n'ai rien trouvé d'équivalent (et sur google non plus
d'ailleurs). La solution serait peut-être d'utiliser du VB mais le corps
de la note n'est pas un champ spécial. Je ne sais pas comment le
sélectionner autrement que par une sélection pas à pas.

Est-ce que quelqu'un à déjà essayé de faire ça ? Ou une solution à
proposer ?

10 réponses

Avatar
Geo

Bonjour,

J'ai inséré des notes de bas de page dans mon document et je souhaiterais ajouter à la
fin un index qui renvoie aux différentes pages selon un ordre alphabétique des notes de
bas de page (en plus clair, les notes de bas de page sont des références
bibliographiques, et je voudrais mettre un index à la fin classé par auteur et non par
numéro de note, avec la page correspondante).


Regardez déjà si vous ne pouvez pas le faire avec justement l'index,
c'est fait pour ça. Mais j'ai un doute : cela marche-t-il avec les
notes de bas de pages ?

Sous word je n'ai rien trouvé d'équivalent (et sur google non plus d'ailleurs). La
solution serait peut-être d'utiliser du VB mais le corps de la note n'est pas un champ
spécial. Je ne sais pas comment le sélectionner autrement que par une sélection pas à
pas.


Il y a au moins le style "note de bas de page" qui permet de repérer ce
texte.
Mais le mieux est d'utiliser la collection Footnotes.
Mais le super mieux reste de regarder l'index.
Voir http://faqword.free.fr/articles.php?lng=fr&pg46

--
A+

Avatar
livevil
Bonjour

Regardez déjà si vous ne pouvez pas le faire avec justement l'index,
c'est fait pour ça. Mais j'ai un doute : cela marche-t-il avec les notes
de bas de pages ?


Ca ne marche pas avec l'index (l'index pour les titres, figures, ... est
différent des notes de bas de page.


Il y a au moins le style "note de bas de page" qui permet de repérer ce
texte.
Mais le mieux est d'utiliser la collection Footnotes.
Mais le super mieux reste de regarder l'index.
Voir http://faqword.free.fr/articles.php?lng=fr&pg46


Qu'est-ce que vous entendez par la "collection footnote" ?

Avatar
Geo

Bonjour

Regardez déjà si vous ne pouvez pas le faire avec justement l'index, c'est fait pour
ça. Mais j'ai un doute : cela marche-t-il avec les notes de bas de pages ?


Ca ne marche pas avec l'index (l'index pour les titres, figures, ... est différent des
notes de bas de page.


Je vais regarder ce qu'on peut faire, mais présentement je n'ai pas le
temps.

Il y a au moins le style "note de bas de page" qui permet de repérer ce texte.
Mais le mieux est d'utiliser la collection Footnotes.
Mais le super mieux reste de regarder l'index.
Voir http://faqword.free.fr/articles.php?lng=fr&pg46


Qu'est-ce que vous entendez par la "collection footnote" ?


Chaque note de pied de page est un élément de la collection footnotes.

Ca doit donner quelques chose comme :

Sub NotesBasDePAge()
Dim MaNote As Footnote
Dim p As Integer
For Each MaNote In ActiveDocument.Footnotes
' Traitement d'une note de bas de page
p = InStr(MaNote.Range.Text, "grenouille")
If p > 0 Then
'Le mot grenouille est dans cette note
'...
End If
Next
End Sub

--
A+


Avatar
livevil
Je vais regarder ce qu'on peut faire, mais présentement je n'ai pas le
temps.


Merci !

Chaque note de pied de page est un élément de la collection footnotes.

Ca doit donner quelques chose comme :

Sub NotesBasDePAge()
Dim MaNote As Footnote
Dim p As Integer
For Each MaNote In ActiveDocument.Footnotes
' Traitement d'une note de bas de page
p = InStr(MaNote.Range.Text, "grenouille")
If p > 0 Then
'Le mot grenouille est dans cette note
'...
End If
Next
End Sub



J'en suis à ce point, qui donne un résultat pas trop mauvais:


Sub Macro1()
==================================================================== Dim i, j As Integer

Dim Reflist

Dim RefNo As Integer
Dim ItemNo As Integer
Dim RefIndex As String

Selection.ParagraphFormat.TabStops.ClearAll
ActiveDocument.DefaultTabStop = CentimetersToPoints(1.25)
Selection.ParagraphFormat.TabStops.Add
Position:ÎntimetersToPoints(15#), Alignment:=wdAlignTabLeft,
Leader:=wdTabLeaderDots

RefNo = -1
Reflist = ActiveDocument.GetCrossReferenceItems(wdRefTypeFootnote)

For ItemNo = 1 To UBound(Reflist)


Do While IsNumeric(Left(Reflist(ItemNo), i))
i = i + 1
Loop
'Selection.InsertCrossReference ReferenceType:="Note de bas de page",
ReferenceKind:=wdFootnoteNumber, ReferenceItem:=ItemNo,
InsertAsHyperlink:=True, IncludePosition:úlse
'Selection.TypeText Text:=""
RefIndex = Mid(Reflist(ItemNo), i, Len(Reflist(ItemNo)))
Selection.TypeText Text:=RefIndex
Selection.TypeText Text:=vbTab + "p"
Selection.InsertCrossReference ReferenceType:="Note de bas de page",
ReferenceKind:=wdPageNumber, ReferenceItem:=ItemNo,
InsertAsHyperlink:=True, IncludePosition:úlse
Selection.TypeText Text:=Chr(13) + Chr(10)

Next ItemNo

End Sub
========================================================================== (Désolé, ce n'est pas très lisible comme cela)

Mais malheureusement la fonction GetCrossReference ne renvoie pas la
note de bas de page complète, mais seulement une partie, lorsque
celle-ci est trop longue. Je ne sais pas comment modifier cela. A part
ce problème, la macro marche et me met le corps de la note de bas de
page (après avoir enlevé son numéro en tête de ligne), suivi du numéro
de page qui sert également d'appel.
La taille de la variable renvoyée par GetCrossReference est-elle limitée ?

A+
livevil

Avatar
Geo

J'en suis à ce point, qui donne un résultat pas trop mauvais:


Si je comprends bien vous voulez mettre l'intégralité du texte des
notes en référence.

Êtes-vous en vba ou en Vsto ?
Votre macro bloque en vba car i n'étant pas initialisé, il commence à
0, or en vba le premier caractère est indexé par 1.
D'ailleurs il manque la ré-initialisation de cette variable, mais comme
la longueur du numéro ne peut qu'augmenter ça marche quand même.
Si c'est exprès : bravo, d'y avoir pensé.
Et si je peux me permettre : en vba Dim i, j As Integer, fait que i est
un variant et non un integer.

C'est juste quelques remarques que je me suis faites en regardant votre
code.

Effectivement GetCrossReferenceItems limite le texte retourné à 92 ou
93 caractères, mais je n'ai rien trouvé dans la doc là-dessus.

Solution de contournement, j'en reviens à la collection footnotes et
comme il n'y a que le texte de la note, votre macro se simplifie:

Sub Macro1()
Dim ItemNo As Integer
Dim RefIndex As String
Selection.ParagraphFormat.TabStops.ClearAll
ActiveDocument.DefaultTabStop = CentimetersToPoints(1.25)
Selection.ParagraphFormat.TabStops.Add
position:ÎntimetersToPoints(15#), Alignment:=wdAlignTabLeft,
Leader:=wdTabLeaderDots
For ItemNo = 1 To ActiveDocument.Footnotes.Count
RefIndex = ActiveDocument.Footnotes(ItemNo).Range.Text
Selection.TypeText Text:=RefIndex
Selection.TypeText Text:=vbTab + "p"
Selection.InsertCrossReference ReferenceType:="Note de bas de page",
ReferenceKind:=wdPageNumber, ReferenceItem:=ItemNo,
InsertAsHyperlink:=True, IncludePosition:úlse
Selection.TypeText Text:=Chr(13) + Chr(10)
Next ItemNo
End Sub

--
A+

Avatar
Geo

Regardez déjà si vous ne pouvez pas le faire avec justement l'index, c'est fait pour
ça. Mais j'ai un doute : cela marche-t-il avec les notes de bas de pages ?


Ca ne marche pas avec l'index (l'index pour les titres, figures, ... est différent des
notes de bas de page.


Je viens de faire un essai en mettant la totalité de chaque note de bas
de page en référence pour index (champ XE) ça me crée bien un index
avec le contenu des notes.
Quelle difficulté rencontrez-vous ?

--
A+


Avatar
livevil
Je viens de faire un essai en mettant la totalité de chaque note de bas
de page en référence pour index (champ XE) ça me crée bien un index avec
le contenu des notes.
Quelle difficulté rencontrez-vous ?



Je ne parviens pas à faire un index qui répertorie les notes de bas de page.

Sinon la macro proposée marche bien. Merci !

Avatar
livevil
Par contre ça ne conserve pas la mise en forme. Est-ce qu'il ne faudrait
pas mieux passer par un copy/paste ?
Avatar
Geo

Par contre ça ne conserve pas la mise en forme. Est-ce qu'il ne faudrait pas mieux
passer par un copy/paste ?


Pourquoi pas ?

On pourrait aussi appliquer le style des notes.
voire en créer un autre du même genre que dans les tables des matières
avec les points de suite par exemple.

--
A+

Avatar
Geo

Je viens de faire un essai en mettant la totalité de chaque note de bas de page en
référence pour index (champ XE) ça me crée bien un index avec le contenu des notes.
Quelle difficulté rencontrez-vous ?



Je ne parviens pas à faire un index qui répertorie les notes de bas de page.


Techniquement ça marche :
http://cjoint.com/?jsvSJGYskE

J'ai répété mon texte pour avoir des notes avec le même texte, il
indique bien selon les cas 1 ou 1,2.

Peut-être la mise en page ne vous plaît-elle pas ?

Mais bon il faut passer en revue toutes les notes pour les marquer et
si un jour vous modifiez le texte, il faut aussi modifier le marquage.
On pourrait le faire au moyen d'une macro, mais on revient au départ.

--
A+