William doit insérer le nom de fichier dans un tableau qui se trouve dans une zone de texte dans le pied de page d’un document (c’est une exigence du client pour le faire de cette façon).

Il souhaite que ce nom de fichier se mette à jour automatiquement à chaque fois qu’il enregistre le document, ou du moins lorsqu’il utilise « Enregistrer sous » pour créer un nouveau fichier.

William a inséré un champ FILENAME, mais il doit toujours se rappeler d’ouvrir le pied de page et de cliquer dessus et d’appuyer sur F9 pour le mettre à jour. Il préférerait que cela se fasse automatiquement.

Historiquement, Word a été développé en sachant que vos documents seraient éventuellement imprimés. (C’était avant l’époque où l’on effectuait la plupart des tâches en ligne, par voie électronique.) L’un des artefacts liés à cette compréhension historique est que Word ne met pas à jour les champs tant que vous n’êtes pas prêt à imprimer. Ainsi, les champs ne sont pas mis à jour lorsque vous effectuez d’autres tâches, telles que l’enregistrement ou l’utilisation de Enregistrer sous.

Avec cette compréhension à l’esprit, il y a deux choses que vous pouvez faire. Tout d’abord, il faut faire croire à Word que vous imprimez. Avant de faire ce « truc », cependant, vous voudrez suivre ces étapes:

  1. Affichez la boîte de dialogue Options Word. (Dans Word 2007, cliquez sur le bouton Office, puis sur Options Word. Dans Word 2010 et les versions ultérieures, affichez l’onglet Fichier du ruban, puis cliquez sur Options.)

  2. À gauche de la boîte de dialogue, cliquez sur Afficher. (Voir la figure 1.)

  3. Assurez-vous que la case à cocher Mettre à jour les champs avant l’impression est activée.

  4. Cliquez sur Avancé sur le côté gauche de la boîte de dialogue.

  5. Faites défiler vers le bas jusqu’à ce que vous voyiez la section Imprimer. (Voir la figure 2.)

  6. Assurez-vous que la case à cocher Autoriser les champs contenant les modifications suivies à se mettre à jour avant l’impression est cochée.

  7. Cliquez sur OK pour enregistrer vos modifications.

Maintenant, tout ce que vous avez à faire lorsque vous souhaitez mettre à jour les champs est d’appuyer sur Ctrl + P. Cela affiche la boîte de dialogue Imprimer (Word 2007) ou les options d’impression (versions ultérieures de Word). Une fois que vous êtes à ce stade, les champs du document doivent être mis à jour car Word prévoit que vous allez imprimer. Vous pouvez appuyer sur Echap ou cliquer sur l’onglet Accueil du ruban pour abandonner l’impression, et vous devez noter que tous les champs de votre document sont mis à jour.

Vous pouvez également utiliser une macro pour effectuer ces tâches. La macro suivante ne modifie pas les paramètres de la boîte de dialogue Options de Word, mais elle effectue juste assez de la séquence d’impression pour inciter Word à mettre à jour les champs.

Sub UpdateAllFields()

With ActiveDocument         .PrintPreview         .ClosePrintPreview     End With End Sub

Il existe une autre approche macro que vous pouvez adopter, si vous le souhaitez. Cette approche contourne toute supercherie et, à la place, parcourt chacune des « histoires »

dans un document et met à jour tous les champs trouvés dans ces histoires. (Une « histoire »

est mieux vue comme une couche dans votre document. Le document principal est une histoire, les en-têtes et pieds de page une autre, les graphiques une autre, et ainsi de suite.) Il y a en fait deux macros utilisées dans cette approche; vous exécuteriez la macro UpdateAllFields afin de démarrer le processus de mise à jour.

Sub UpdateAllFields()

Dim objStory As Range     Dim objTOC As TableOfContents     Dim objTOA As TableOfAuthorities     Dim objTOF As TableOfFigures     Dim objIndex As Index

Application.ScreenUpdating = False     Application.DisplayAlerts = wdAlertsNone

For Each objStory In ActiveDocument.StoryRanges         UpdateFieldsInStory objStory

While Not (objStory.NextStoryRange Is Nothing)

Set objStory = objStory.NextStoryRange             UpdateFieldsInStory objStory         Wend     Next             For Each objTOC In ActiveDocument.TablesOfContents         objTOC.Update     Next

For Each objTOA In ActiveDocument.TablesOfAuthorities         objTOA.Update     Next

For Each objTOF In ActiveDocument.TablesOfFigures         objTOF.Update     Next

For Each objIndex In ActiveDocument.Indexes         objIndex.Update     Next

Application.DisplayAlerts = wdAlertsAll     Application.ScreenUpdating = True End Sub
Private Sub UpdateFieldsInStory(iobjStory As Range)

Dim objShape As Shape

With iobjStory         .Fields.Update

Select Case .StoryType             Case wdMainTextStory, wdPrimaryHeaderStory, _               wdPrimaryFooterStory, wdEvenPagesHeaderStory, _               wdEvenPagesFooterStory, wdFirstPageHeaderStory, _               wdFirstPageFooterStory

For Each objShape In .ShapeRange                     With objShape.TextFrame                         If .HasText Then .TextRange.Fields.Update                     End With                 Next         End Select     End With End Sub

Si vous souhaitez en savoir plus sur la mise à jour des champs à l’aide de macros, vous pouvez visiter cette page sur le site de Greg Maxey; accorder une attention particulière à la section intitulée « Mise à jour des champs »:

http://gregmaxey.mvps.org/word_tip_pages/word_fields.html

Comme vous pouvez le constater, il n’est pas forcément facile de mettre à jour tous les champs d’un document. Il semblerait que Microsoft pourrait facilement ajouter une telle capacité, mais même avec de nombreuses années sous le pont, Word n’a toujours pas une telle capacité. Si vous souhaitez voir Microsoft ajouter la capacité, vous pouvez visiter leur forum UserVoice et voter pour une telle capacité:

https://word.uservoice.com/forums/304924-word-for-windows-desktop-application/suggestions/11685894

_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 (13475) s’applique à Microsoft Word 2007, 2010, 2013 et 2016.