Enregistrer les informations de recherche et de remplacement dans une macro (Microsoft Word)
Simao a quelques macros qui font beaucoup de recherches et de remplacements. Cependant, une fois les macros terminées, il aimerait restaurer la recherche et remplacer les paramètres par ceux en vigueur juste avant d’exécuter les macros. Ainsi, Simao se demande où trouver toutes les propriétés de recherche et de remplacement pour pouvoir les enregistrer au début de chaque macro et les restaurer à la fin.
Comme Simao y fait allusion, la « bonne pratique » est que votre macro retourne tout ce qu’elle change dans l’état dans lequel elle se trouvait avant l’exécution de la macro.
De cette façon, votre macro ne gâchera rien d’autre que l’utilisateur puisse faire.
L’idée dans la mise en œuvre de cette pratique est de suivre ces étapes:
-
Déterminez ce que votre macro va changer. Créez des variables dans lesquelles stocker toutes les propriétés qui seront modifiées. Stockez les propriétés dans les variables que vous avez créées. Fais ton travail . Restaurez ces propriétés à partir des variables que vous avez définies précédemment à l’étape 3
La clé ici est l’étape 1. Si vous ne pouvez pas comprendre ce que votre macro va changer, vous ne pouvez pas continuer avec les autres étapes. En effectuant des opérations de recherche et de remplacement, il existe un certain nombre d’objets qui peuvent être impliqués, et chacun d’entre eux a un bon nombre de propriétés.
Un moyen simple de comprendre les choses consiste simplement à enregistrer une macro qui effectue l’opération Rechercher et remplacer, puis à examiner le code produit par l’enregistreur. Par exemple, j’ai enregistré la recherche du mot « the »
et en le remplaçant par le mot «LE». Quand j’ai arrêté l’enregistreur de macros et regardé ce qu’il a créé, c’est la partie pertinente de ce que j’ai vu:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "the" .Replacement.Text = "THE" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With
Je reviendrai sur les deux premières lignes de ce code dans un instant, mais regardez toutes les autres lignes produites. Avec l’objet .Find, un ensemble de propriétés est spécifié. Ce sont des propriétés correspondant aux paramètres de la boîte de dialogue Rechercher et remplacer. Ainsi, vous avez maintenant une liste de variables que vous devez définir, au minimum, afin que vous puissiez enregistrer les paramètres de chacune de ces propriétés et les restaurer ultérieurement.
Revenons maintenant à ces deux premières lignes du code; ils représentent la mouche principale de la pommade. La méthode .ClearFormatting supprime toute mise en forme définie pour l’opération Rechercher et remplacer. Afin de voir quelles propriétés sont affectées si je définis la mise en forme dans Rechercher et remplacer, j’ai à nouveau enregistré une macro de la même opération Rechercher et remplacer, mais cette fois en spécifiant que le texte de remplacement doit être en gras et souligné. Tout ce que l’enregistreur a enregistré était le même, à l’exception de quatre lignes de code ajoutées juste après la deuxième ligne ci-dessus:
With Selection.Find.Replacement.Font .Bold = True .Underline = wdUnderlineSingle End With
Ce sont les lignes qui spécifient le formatage que je voulais utiliser dans le remplacement. Dans le code précédent, l’enregistreur de macros affiche toutes les propriétés de l’objet .Find. Dans ce cas, la seule chose enregistrée est ce que je suis en train de changer, qui se trouve être dans l’objet .Font. Il existe, malheureusement, d’autres objets qui peuvent être spécifiés en plus de l’objet .Font -. Paragraph, .Tabs, .Language, etc. De plus, ils peuvent non seulement être définis pour l’objet .Find, mais également pour l’objet .Replacement. C’est le potentiel de centaines de propriétés qui doivent être stockées et restaurées.
Cela semble impossible? Probablement pas impossible, mais c’est vraiment décourageant. En utilisant la méthode d’enregistrement des macros, vous devrez effectuer une recherche (ou un remplacement; les concepts sont les mêmes) et modifier la mise en forme de toutes les propriétés de mise en forme possibles qui pourraient être trouvées ou remplacées.
Si vous réussissez à le faire, vous vous retrouverez avec toute la liste.
Voici, par exemple, le code généré pour l’objet Selection.Find.Font:
With Selection.Find.Font .Size = 14 .Bold = True .Underline = wdUnderlineSingle .StrikeThrough = True .DoubleStrikeThrough = False .Hidden = True .SmallCaps = True .AllCaps = False .Color = wdColorRed .Superscript = True .Subscript = False End With
En d’autres termes, 11 propriétés différentes à enregistrer et à réinitialiser. Mais attendez!
Il y a plus! (Cela ressemble à une publicité de couteau Ginsu, n’est-ce pas?) Je n’ai apporté aucune modification à l’onglet Avancé de la boîte de dialogue Rechercher une police, ce qui aurait sans aucun doute élargi cette liste. Vous pouvez avoir une idée du nombre total de propriétés de l’objet .Font en consultant les documents Microsoft pour les propriétés de cet objet. (Assurez-vous de développer le lien Propriétés de l’objet .Font en utilisant la liste déroulante à gauche de la page.)
https://docs.microsoft.com/en-us/office/vba/api/word.font
Vous y verrez plus de 50 propriétés. Et, rappelez-vous, il existe un objet .Font distinct qui appartient à l’objet .Replacement, et il existe des objets appariés similaires pour d’autres éléments de mise en forme (.Paragraph, .Tabs, etc., etc.).
Vraiment intimidant.
Une fois que vous comprenez combien de propriétés sont affectées lorsque vous effectuez une opération Rechercher et remplacer, vous commencez à comprendre pourquoi de nombreuses personnes renoncent à enregistrer et à restaurer les paramètres de mise en forme pour les opérations. C’est faisable; ce n’est cependant pas une entreprise mineure.
_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 (13762) s’applique à Microsoft Word 2007, 2010, 2013, 2016, 2019 et Word dans Office 365.