Jason est un étudiant rédacteur en chef d’une revue de droit universitaire. Dans le cadre du processus de publication, il doit vérifier chaque phrase pour le plagiat et l’exactitude et chaque citation pour assurer une mise en forme et un support appropriés.

Cela signifie essentiellement que chaque phrase doit être appuyée par une citation placée dans une note de bas de page. Actuellement, le personnel copie et colle manuellement chaque phrase de texte, note de bas de page et numéro de note de bas de page du manuscrit de l’auteur (un document Word) dans le document Word d’un éditeur de personnel qui est ensuite utilisé pour la vérification. Jason se demande s’il existe un moyen d’automatiser ce processus de copie du «numéro de note de bas de page», «de la phrase du document de l’article» et du «contenu de la note de bas de page d’origine» du document source du manuscrit dans la feuille de calcul.

Chacune des tâches mentionnées par Jason peut être effectuée par programme, à quelques exceptions près. Il n’est pas si difficile de parcourir les collections de notes de bas de page et de notes de fin, dans VBA, et d’en extraire des informations. Ces informations peuvent ensuite être déplacées vers un nouveau document qui pourrait être utilisé comme feuille de calcul de l’éditeur. La partie irritante est que les numéros de note de bas de page et de note de fin sont dynamiques et donc pas si faciles d’accès.

Une discussion complète de cet irritant peut être trouvée sur ce site:

http://www.vbaexpress.com/forum/showthread.php?31231

La manière exacte dont vous pouvez procéder pour créer une macro pour effectuer le transfert d’informations d’un document à un autre dépend, en grande partie, des caractéristiques des informations contenues dans le document de l’auteur. Par exemple, le document de l’auteur comprend-il un ou deux espaces après une phrase? Autorise-t-il plusieurs notes de bas de page par phrase? Autorise-t-il les notes de fin en plus des notes de bas de page? Comprend-il des tableaux?

Le fait est qu’il existe un certain nombre de considérations qui peuvent affecter le développement d’une macro. Cela signifie que toutes les macros devront être réglées avec précision sur le document source avec lequel vous travaillez, ce qui signifie de nombreux tests. Pour vous donner un point de départ, cependant, considérez les macros suivantes. Ils copieront les phrases, les notes de bas de page et les notes de fin (le cas échéant) d’un document source vers un nouveau document.

Sub FootnotesEndnotes()

Dim fNote As Footnote     Dim eNote As Endnote     Dim aRange As Range     Dim sText As String     Dim rText As String     Dim eRef As String     Dim newDoc As Document     Dim oldDoc As Document

Set oldDoc = ActiveDocument     Set newDoc = Documents.Add

sText = "---------------FOOTNOTES---------------" & vbCr     newDoc.Content.InsertAfter sText

oldDoc.Activate     For Each fNote In ActiveDocument.Footnotes         Set aRange = fNote.Reference         aRange.MoveStart unit:=wdSentence, Count:=-1         aRange.MoveEnd unit:=wdSentence         sText = aRange.Text         rText = fNote.Range.Text         With fNote.Reference.Characters.First             .Collapse             .InsertCrossReference wdRefTypeFootnote, _               wdFootnoteNumberFormatted, fNote.Index             eRef = .Characters.First.Fields(1).Result             Selection.Start = fNote.Reference.Start - Len(eRef)

Selection.End = fNote.Reference.Start             Selection.Delete         End With         Call WriteNewdoc(newDoc, sText, rText, eRef, "Footnote Text")

Next fNote

sText = "---------------ENDNOTES----------------" & vbCr     newDoc.Content.InsertAfter vbCr & vbCr & sText

For Each eNote In ActiveDocument.Endnotes         Set aRange = eNote.Reference         aRange.MoveStart unit:=wdSentence, Count:=-1         aRange.MoveEnd unit:=wdSentence         sText = aRange.Text         rText = eNote.Range.Text         With eNote.Reference.Characters.First             .Collapse             .InsertCrossReference wdRefTypeEndnote, _               wdEndnoteNumberFormatted, eNote.Index             eRef = .Characters.First.Fields(1).Result             Selection.Start = eNote.Reference.Start - Len(eRef)

Selection.End = eNote.Reference.Start             Selection.Delete         End With         Call WriteNewdoc(newDoc, sText, rText, eRef, "Endnote Text")

Next eNote

newDoc.Activate End Sub

Sub WriteNewdoc(newDoc As Document, sText As String, rText As String, _        eRef As String, aStyle As String)

Dim sText1 As String     Dim sText2 As String     Dim dRange As Range     Dim k As Long     Dim curDoc As Document

Set curDoc = ActiveDocument     newDoc.Activate     k = InStr(sText, Chr(2))

If k = 1 Then sText = Mid(sText, 2) 'in case previous sentence has note     sText = Trim(sText)

k = InStr(sText, Chr(2))

If k = 0 Then         sText = sText & Chr(2)

k = Len(sText)

End If     If k > 1 Then         sText1 = Left(sText, k - 1)

Else         sText1 = ""

End If     If k = Len(sText) Then         sText2 = ""

Else         sText2 = Mid(sText, k + 1)

End If     If Len(sText2) > 0 Then         If Mid(sText2, Len(sText2), 1) = Chr(13) Then             sText2 = Left(sText2, Len(sText2) - 1)

End If     End If     Set dRange = newDoc.Content     dRange.Collapse Direction:=wdCollapseEnd     dRange.Select     With Selection         .InsertAfter vbCr & sText1         .Font.Superscript = False         .Collapse Direction:=wdCollapseEnd         .InsertAfter eRef         .Font.Superscript = True         .Collapse Direction:=wdCollapseEnd         .InsertAfter " " & sText2 & vbCr         .Font.Superscript = False         .Collapse Direction:=wdCollapseEnd         .InsertAfter eRef         .Font.Superscript = True         .Collapse Direction:=wdCollapseEnd         .InsertAfter " " & rText & vbCr & vbCr         .Font.Superscript = False         .Style = aStyle     End With     curDoc.Activate End Sub

Ce n’est (encore) qu’un point de départ. Vous devrez tester et modifier les macros avec vos documents pour vous assurer qu’elles font ce que vous attendez.

Si vous recherchez des ressources supplémentaires pour vous aider à développer une telle macro, vous pouvez essayer ce livre. C’est un cadeau, et il peut avoir des macros (ou des exemples) que vous pouvez adapter à vos objectifs spécifiques:

http://www.archivepub.co.uk/book.html

Ne soyez pas surpris si votre macro devient assez complexe avec le temps. Il faut s’y attendre chaque fois que vous créez une macro pour effectuer des tâches que les humains peuvent faire avec relativement peu de réflexion.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

WordTips est votre source pour une formation Microsoft Word rentable.

(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (12724) s’applique à Microsoft Word 2007, 2010, 2013, 2016, 2019 et Word dans Office 365.