Recherche de texte cité dans VBA (Microsoft Word)
Jennifer a besoin d’un moyen, dans une macro, de trouver une chaîne entourée de guillemets intelligents ou droits (ou un mélange des deux). Elle ne parvient pas à trouver la combinaison appropriée de commandes pour la méthode Find pour localiser toutes les instances d’un tel texte dans toutes les versions de Word.
Il est important d’être clair sur ce qui est recherché. L’hypothèse dans cette astuce est que votre macro vous oblige à rechercher une chaîne specific entourée de guillemets, et non une chaîne any entourée de guillemets. Par exemple, dans un document qui contient deux chaînes entre guillemets telles que « mon texte entre guillemets » et « texte plus cité », vous ne souhaitez rechercher qu’une des chaînes dont vous connaissez le texte, à l’avance, pas les deux chaînes .
Dans ce cas, il est très bien d’utiliser la méthode Find, comme vous le notez. La question est de savoir comment intégrer la possibilité à la fois de guillemets intelligents et de guillemets droits dans ce que vous recherchez. Heureusement, la méthode Find, par défaut, fait correspondre les guillemets simples et intelligents de manière interchangeable. Le point clé est de savoir comment spécifier que vous souhaitez que les guillemets soient inclus dans la recherche. L’extrait de code suivant devrait faire l’affaire:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """my quoted text""" .Format = False .MatchWildcards = False End With Selection.Find.Execute
La clé de ce code est la manière dont les informations sont affectées à la propriété .Text. Notez que tout ce que vous recherchez (dans ce cas, « mon texte cité ») est entouré de trois guillemets de chaque côté. La raison en est plutôt obscure: la chaîne que vous recherchez doit être entourée de guillemets; ceci est requis par VBA. Ceci est montré ici:
"my quoted text"
Étant donné que vous voulez un caractère de guillemet réel au début de ce que vous recherchez, vous devez inclure un deuxième guillemet comme « délimiteur » pour indiquer que vous souhaitez trouver le caractère de guillemet. Cela signifie qu’il y a maintenant trois guillemets au début:
"""my quoted text"
La même technique extra-quote-mark-as-delimiter s’applique également à la fin de la chaîne, de sorte que vous vous retrouvez avec ce qui est affiché dans l’extrait de code.
Lorsque le code est exécuté, Word trouve consciencieusement la chaîne, entourée de tout mélange de guillemets simples ou intelligents, comme vous le souhaitez.
Il convient également de noter que cette approche ne fonctionne que si vous effectuez une recherche régulière, avec la propriété .MatchWildcards définie sur False.
_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 (11639) 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-Finding_Quoted_Text_in_VBA [Recherche de texte cité dans VBA]
.