Lisa a besoin d’un moyen de trouver les deux derniers mots dans tous les paragraphes d’un document et de remplacer l’espace entre ces mots par un espace insécable. Elle se demande si cela est possible en utilisant Rechercher et remplacer.

Le moyen le plus simple de le faire sans utiliser de macro consiste à s’appuyer sur les fonctionnalités génériques de Rechercher et remplacer. La clé pour ce faire est de se rappeler que vous n’avez pas vraiment besoin d’identifier les deux derniers mots de ce que vous trouvez – il vous suffit d’identifier le dernier mot, avec son espace précédent. Suivez ces étapes:

  1. Appuyez sur Ctrl + H. Word affiche l’onglet Remplacer de la boîte de dialogue Rechercher et remplacer.

  2. Cliquez sur le bouton Plus, s’il est visible. (Voir la figure 1.)

  3. Cochez la case Utiliser les caractères génériques.

  4. Dans la zone Rechercher, entrez ceci: () ([0-9A-Za-z ~ -] \ {1,}) ([. \! \? \:]) (^ 13). Dans la zone Remplacer par, entrez ceci: ^ s \ 2 \ 3 \ 4. Cliquez sur Remplacer tout.

Comment cela fonctionne réellement peut prendre juste un peu d’explication. L’astuce ici est ce que vous recherchez, spécifié à l’étape 4. Chaque élément recherché est entouré de (parenthèses), il est donc facile de les sélectionner et de s’y référer dans la zone Remplacer par (étape 5). Les quatre éléments de la zone Rechercher (encore une fois, entre parenthèses) sont les suivants:

  1. ()

  2. ([0-9A-Za-z ~ -] \ {1,})

  3. ([. \! \? \:])

  4. (^ 13)

Le premier élément est un espace unique. Le second est un nombre quelconque de chiffres, de lettres ou de tirets. (C’est la dernière partie de cet élément – \ {1,} – qui spécifie qu’il peut y avoir n’importe quel nombre de chiffres, de lettres ou de tirets.) C’est l’élément qui spécifie le mot à la fin du paragraphe, et il comprend la possibilité que le mot contienne des tirets afin que les mots composés soient traités comme un seul mot. Le troisième élément est l’un des signes de ponctuation indiqués et le quatrième élément est le marqueur de fin de paragraphe réel.

La spécification Remplacer par (étape 5) remplace simplement le premier élément (l’espace) par un espace insécable, puis remet les deuxième, troisième et quatrième éléments en place.

Il convient de noter qu’il existe plusieurs scénarios dans lesquels cette approche Rechercher et remplacer ne fonctionnera pas. Premièrement, cela ne fonctionnera pas si votre paragraphe comporte des espaces de fin, entre le signe de ponctuation et le marqueur de fin de paragraphe. Vous pouvez utiliser Rechercher et remplacer pour vous en débarrasser dans tout votre document avant d’effectuer la recherche et remplacer ci-dessus.

La deuxième situation où cela ne fonctionnera pas est si votre paragraphe se termine par une ponctuation composée, comme un point suivi d’un guillemet ou d’un guillemet suivi de deux points. La recherche par caractères génériques s’attend à ce qu’il n’y ait qu’un seul signe de ponctuation à la fin du paragraphe, et il doit s’agir de l’un des quatre signes de ponctuation spécifiés.

La troisième situation où cela ne fonctionnera pas est s’il y a une sorte de ponctuation dans le dernier mot du paragraphe. Par exemple, si le dernier mot est en fait un nombre tel que 1 234, l’inclusion de la virgule empêchera la correspondance de se produire. Cela pourrait être résolu en incluant la virgule dans le deuxième élément recherché, mais le nombre de fois que cela pourrait se produire semblait suffisamment minuscule pour que je ne le permette pas dans les étapes ci-dessus.

Si vous préférez une approche macro-basée pour la substitution, vous pouvez envisager d’utiliser la macro suivante:

Sub LastTwo()

Dim p As Paragraph     Dim J As Integer     Dim K As Integer     Dim sTemp As String

For Each p In ActiveDocument.Paragraphs         J = p.Range.Words.Count         For K = J To 1 Step -1             sTemp = p.Range.Words(K)

If Right(sTemp, 1) = " " Then                 p.Range.Words(K) = RTrim(sTemp) & Chr(160)

K = 1             End If         Next K     Next p End Sub

La macro parcourt chaque paragraphe de votre document, puis recule dans les mots des paragraphes. Il recherche le premier mot qui contient un espace de fin, puis remplace cet espace par un espace insécable.

Il y a une chose intéressante à propos de cette macro: elle peut ne pas fonctionner comme prévu sur tous les systèmes. Si, après l’avoir exécuté, vous n’obtenez pas d’espace insécable mais voyez plutôt un petit « croisement » entre les deux derniers mots, remplacez simplement Chr (160) dans le code par Chr (202). Ce serait beaucoup plus facile si Word incluait une énumération définie pour un espace insécable, mais ce n’est pas le cas. Au lieu de cela, vous devez vous fier au code ASCII pour un espace insécable, qui ne semble pas être le même sur tous les systèmes.

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