Jay a une situation où il a un champ de propriété de document inséré dans une zone de texte dans un document. Utiliser Ctrl + A puis appuyer sur F9 devrait mettre à jour tous les champs de document de propriété dans le document, mais ce champ n’est pas mis à jour par l’action de Jay. Le processus de mise à jour des champs dans les en-têtes et les pieds de page ne met pas non plus à jour le champ à l’intérieur de la zone de texte.

Jay se demande s’il existe un moyen de mettre à jour manuellement le champ à l’aide du clavier ou s’il existe un moyen de le mettre à jour à l’aide d’une macro.

Les champs peuvent être placés dans de nombreux éléments de document. Ils peuvent être, par exemple, dans le texte du document principal, dans des zones de texte, dans des en-têtes ou des pieds de page, dans des formes automatiques ou dans des tableaux spéciaux. Tout en appuyant sur Ctrl + A sélectionnera tout votre document, appuyer sur F9 ne mettra pas à jour les champs de tous les éléments du document. Au lieu de cela, vous devez utiliser une macro pour effectuer la mise à jour.

Si vous souhaitez simplement qu’une macro mette à jour les champs dans l’une de vos zones de texte, cela est assez simple à faire. La macro suivante parcourt chacune des formes de votre document (cela inclut les zones de texte et les formes automatiques)

et, si la forme contient du texte, mettez à jour tous les champs qu’elle contient.

Sub UpdateTBFields()

Dim shp As Shape

For Each shp In ActiveDocument.Shapes         With shp.TextFrame             If .HasText Then                 .TextRange.Fields.Update             End If         End With     Next End Sub

Cette macro peut être affectée à un raccourci clavier afin que vous puissiez facilement mettre à jour les champs en appuyant simplement sur le raccourci. Bien sûr, vous voudrez peut-être développer une macro plus globale qui met à jour tous les champs, où qu’ils se trouvent. (N’oubliez pas: les champs peuvent être dans n’importe quel nombre d’éléments de document.) Dans ce cas, considérez la version plus complète de la macro suivante.

Public Sub UpdateAllFields()

Dim doc As Document     Dim wnd As Window     Dim lngMain As Long     Dim lngSplit As Long     Dim lngActPane As Long     Dim rngStory As Range     Dim TOC As TableOfContents     Dim TOA As TableOfAuthorities     Dim TOF As TableOfFigures     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

'Loop through text boxes and update     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

_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 (12344) s’applique à Microsoft Word 2007, 2010, 2013, 2016, 2019 et Word dans Office 365. Vous pouvez trouver une version de cette astuce pour le ancienne interface de menu de Word ici:

link: / word-Updating_a_Field_in_a_Text_Box [Mise à jour d’un champ dans une zone de texte].