Inclure les en-têtes et pieds de page lors de la sélection de tout (Microsoft Word)
Tim a créé une macro simple pour mettre à jour tous les champs d’un modèle. La macro comprend une étape qui sélectionne le document entier, un peu comme appuyer sur Ctrl + A. Cette étape ne sélectionne pas les en-têtes et les pieds de page, et Tim craint qu’il y ait des champs à mettre à jour à ces emplacements. Il se demande s’il existe un moyen d’inclure des en-têtes et des pieds de page lors de la sélection de tout, ou s’il existe une manière différente pour sa macro de mettre à jour les champs dans les zones d’en-tête ou de pied de page.
La réponse simple est que vous devez modifier votre code de macro afin qu’il recherche dans toutes les différentes zones Word qu’il peut y avoir des champs. Le problème avec l’utilisation d’une approche «sélectionner tout» est qu’elle ne sélectionne que le texte dans le document principal. Les en-têtes, les pieds de page et une foule d’autres éléments sont conservés dans leurs propres calques séparés qui les empêchent d’être sélectionnés avec tout le texte du document.
Si vous souhaitez simplement mettre à jour les champs dans le texte principal et dans les en-têtes et pieds de page, vous devez utiliser une technique telle que la suivante:
Sub MyUpdateFields1() ActiveDocument.StoryRanges(wdMainTextStory).Fields.Update ActiveDocument.StoryRanges(wdPrimaryFooterStory).Fields.Update ActiveDocument.StoryRanges(wdPrimaryHeaderStory).Fields.Update End Sub
Notez que les différentes couches d’un document sont appelées «histoires» et conservées dans leur propre collection. Alors que cette simple macro met très rapidement à jour les champs des stories contenant le texte principal, les pieds de page et les en-têtes, il existe d’autres stories (couches)
où il pourrait y avoir des champs nécessitant une mise à jour. La macro suivante examine chaque histoire, quel que soit son type, et effectue la mise à jour requise:
Sub MyUpdateFields2() Dim story As Word.Range For Each story In ActiveDocument.StoryRanges Do story.Fields.Update ' Check linked stories as linked stories are not independent Set story = story.NextStoryRange Loop Until (story Is Nothing) Next End Sub
Si vous voulez vraiment être complet, cependant, il y a plus que les différentes couches d’histoire que vous devez parcourir. Par exemple, il se peut que certains champs contenus dans des zones de texte nécessitent une mise à jour. Une macro plus complète est nécessaire pour traiter tous ces autres endroits où les champs pourraient être localisés. Dans l’exemple suivant, notez les nombreux éléments du document qui peuvent être vérifiés pour les champs.
Sub MyUpdateFields3() Dim doc As Document ' Pointer to Active Document Dim wnd As Window ' Pointer to Document's Window Dim lngMain As Long ' Main Pane Type Holder Dim lngSplit As Long ' Split Type Holder Dim lngActPane As Long ' ActivePane Number Dim rngStory As Range ' Range Objwct for Looping through Stories Dim TOC As TableOfContents ' Table of Contents Object Dim TOA As TableOfAuthorities 'Table of Authorities Object Dim TOF As TableOfFigures 'Table of Figures Object Dim shp As Shape ' Set Objects Set doc = ActiveDocument Set wnd = ActiveDocument.ActiveWindow ' get Active Pane Number lngActPane = wnd.ActivePane.Index ' Hold View Type of Main pane lngMain = wnd.Panes(1).View.Type ' Hold SplitSpecial lngSplit = wnd.View.SplitSpecial ' Get Rid of any split wnd.View.SplitSpecial = wdPaneNone ' Set View to Normal wnd.View.Type = wdNormalView ' Loop through each story in doc to update For Each rngStory In doc.StoryRanges If rngStory.StoryType = wdCommentsStory Then Application.DisplayAlerts = wdAlertsNone ' Update fields rngStory.Fields.Update Application.DisplayAlerts = wdAlertsAll Else ' Update fields rngStory.Fields.Update End If Next For Each shp In doc.Shapes With shp.TextFrame If .HasText Then shp.TextFrame.TextRange.Fields.Update End If End With Next ' Loop through TOC and update For Each TOC In doc.TablesOfContents TOC.Update Next ' Loop through TOA and update For Each TOA In doc.TablesOfAuthorities TOA.Update Next ' Loop through TOF and update For Each TOF In doc.TablesOfFigures TOF.Update Next ' Return Split to original state wnd.View.SplitSpecial = lngSplit ' Return main pane to original state wnd.Panes(1).View.Type = lngMain ' Active proper pane wnd.Panes(lngActPane).Activate ' Close and release all pointers Set wnd = Nothing Set doc = Nothing End Sub
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 (522) s’applique à Microsoft Word 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban de Word (Word 2007 et plus tard) ici:
link: / wordribbon-Including_Headers_and_Footers_when_Selecting_All [Y compris les en-têtes et pieds de page lors de la sélection de tout]
.