Détection du début d’une phrase dans une macro (Microsoft Word)
Shelley développe une macro qui change toutes les permutations de majuscules de « à condition que » (« à condition que », « à condition que », etc.)
en minuscules. C’est assez facile à faire, mais si la phrase commence une phrase, le « P » doit être en majuscule. Shelley se demande s’il existe un moyen, dans une macro, de dire si une phrase telle que « à condition que » soit au début d’une phrase.
Il y a plusieurs façons de procéder. Tout d’abord, vous pouvez utiliser Rechercher et remplacer pour effectuer des recherches et des remplacements successifs. La macro pourrait effectuer les opérations suivantes:
-
Remplacez toutes les variantes de «à condition que» par des minuscules.
-
Recherchez «. A fourni que» (point, espace, «à condition que») et remplacez-le par «. À condition que» (majuscule appropriée).
-
Répétez la recherche et remplacez à l’étape 2 en utilisant d’autres signes de ponctuation de fin de phrase tels qu’un point d’exclamation, un point d’interrogation ou l’un de ces signes de ponctuation suivis d’un guillemet.
Comme cela se fait dans une macro, le processus devrait aller très rapidement.
Voici un exemple qui pourrait faire le travail:
Sub ChangeCase1() Dim vFindText As Variant Dim vReplaceText As Variant Dim orng As Range Dim i As Long vFindText = Array(". provided that", _ "! provided that", _ "? provided that", _ "."" provided that", _ "!"" provided that", _ "?"" provided that") vReplaceText = Array(". Provided that", _ "! Provided that", _ "? Provided that", _ "."" Provided that", _ "!"" Provided that", _ "?"" Provided that") ' Set all occurrences to lowercase Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:="provided that", _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = "provided that" orng.Collapse wdCollapseEnd Loop End With ' Account for end-of-sentence For i = 0 To UBound(vFindText) Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:=vFindText(i), _ MatchCase:=True, _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = vReplaceText(i) orng.Collapse wdCollapseEnd Loop End With Next End Sub
Une des lacunes de cette approche est qu’elle ne permet pas que « à condition que » se produise au début d’un paragraphe. La macro pourrait être modifiée pour prendre en compte ces instances, mais ce serait plus complexe.
Cependant, vous pouvez utiliser une approche différente. Celui-ci repose sur un paramètre plutôt ésotérique pour la propriété Case: wdTitleSentence. Ce paramètre change tous les caractères (à une exception notable près) en minuscules et si la phrase est au début d’une phrase, le premier caractère sera remplacé par une majuscule. Voici comment vous pouvez l’utiliser dans une macro:
Sub ChangeCase2() With Selection.Find .ClearFormatting .Wrap = wdFindContinue .Forward = True .Format = True .MatchCase = False .MatchWildcards = False .Text = "provided that" .Execute While .Found Selection.Range.Case = wdLowerCase Selection.Range.Case = wdTitleSentence Selection.Collapse Direction:=wdCollapseEnd .Execute Wend End With End Sub
Notez que dans la boucle While, deux affectations sont apportées à la propriété Case. Le premier définit la sélection (ce qui a été trouvé) en minuscules et le second définit la casse du titre pour une phrase. Le paramètre en minuscules est spécifique pour gérer la « seule exception notable »
J’ai mentionné – si le texte « PROVIDED that » est au début d’une phrase, le paramètre wdTitleSentence ne le changera pas, pour une raison quelconque, en « Provided that ». Cependant, il changera « à condition que » (ce que « FOURNI cela » devient après l’avoir mis en minuscules) en « Fourni que » sans problème.
_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 (13398) s’applique à Microsoft Word 2007, 2010 et 2013.