Stephen a demandé s’il était possible de contrôler le format des références croisées insérées par Word. Lorsqu’il insère une étiquette et un numéro comme le tableau 1 ou la figure 12, il veut l’étiquette en minuscules (tableau, figure) et un espace insécable entre l’étiquette et le nombre.

Il n’existe aucun moyen de contrôler ce type de mise en forme de référence croisée dans Word. Évidemment, vous pouvez modifier les références croisées manuellement après les avoir placées, mais chaque fois que vous mettez à jour des champs, le format d’origine choisi par Word sera utilisé pour eux. Il existe quelques solutions macro-basées que vous pouvez essayer. La première solution modifiera les codes de champ réels utilisés pour le champ:

Sub FieldRefChanges1()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 'add format switch with lowercase option to field codes                 oFld.Code.Text = oFld.Code.Text & "\* lower "

'updates the field results to display the new format                 oFld.Update             End If         Next oFld     Next oStoryRng End Sub

La macro comprend quelques boucles For imbriquées. Le premier parcourt chaque histoire du document et le second passe par chaque champ de chaque histoire. Une instruction If est ensuite utilisée pour s’assurer que le champ est un champ REF (le type utilisé pour les références croisées) et que le résultat du champ est de deux mots ou moins (comme dans le tableau 1 ou la figure 12).

Si ces critères sont remplis, la macro apporte une modification au code de champ réel, en ajoutant le commutateur qui entraîne l’affichage du champ en minuscules.

Il y a quelques inconvénients à cette macro. Tout d’abord, si vous l’exécutez plusieurs fois, le commutateur \ * inférieur est ajouté plusieurs fois aux champs REF. Deuxièmement, la macro ne change pas l’espace dans les résultats de champ en un espace insécable.

Pour surmonter ces deux problèmes, modifiez simplement la macro afin qu’elle automatise le processus manuel que vous utiliseriez pour modifier les résultats de la macro.

Sub FieldRefChanges2()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field     Dim sTemp As String     Dim J As String

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 sTemp = oFld.Result.Text                 sTemp = LCase(sTemp)

J = InStr(sTemp, " ")

sTemp = Left(sTemp, J - 1) & Chr(160) & _                   Mid(sTemp, J + 1, Len(sTemp) - J)

oFld.Result.Text = sTemp             End If         Next oFld     Next oStoryRng End Sub

Cette macro est essentiellement la même que la précédente, sauf qu’elle fonctionne strictement avec le texte de résultat pour le champ. Le texte est affecté à la variable sTemp, qui est ensuite convertie en minuscules. La position de l’espace est déterminée, et il est remplacé par un espace insécable. Le résultat est ensuite replacé dans le texte de résultat du champ.

_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 (141) 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-Controlling_the_Format_of_Cross-References [Contrôle du format des références croisées].