Mettre en évidence chaque millième de caractère (Microsoft Word)
Hakan a besoin d’une macro qui compte les caractères (sans espaces) dans un document Word et met en évidence toutes les 1000 lettres. La création d’une telle macro est assez simple: il vous suffit d’examiner tous les caractères d’un document, à tour de rôle, et de ne compter que ceux qui ne sont pas des espaces. Ce qui suit est une simple petite macro qui fera exactement cela:
Sub CountThousands1() Dim J As Long Dim X As Integer X = 0 With ActiveDocument For J = 1 To .Characters.Count If .Characters(J) <> " " Then X = X + 1 If X = 1000 Then .Characters(J).Select Selection.Range.HighlightColorIndex = wdYellow X = 0 Beep End If Next J End With End Sub
La macro est assez simple; il examine la collection Characters, qui contient tous les caractères individuels d’un document. Le problème avec la macro est qu’elle est lente – très lente. Word n’est pas très efficace pour examiner des caractères individuels de cette manière. (Il semble que chaque fois que vous référencez un membre de la collection Characters, Word doit examiner tous les caractères depuis le début du document, une fois de plus.)
Une approche différente consiste simplement à parcourir le document, en élargissant une sélection jusqu’à ce que vous obteniez 1 000 caractères non espace.
Sub CountThousands2() Dim X As Integer Dim sRaw As String Dim sProc As String Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend While Len(Selection) = 1000 sRaw = Selection sProc = Replace(sRaw, " ", "") X = 1000 - Len(sProc) While X > 0 Selection.MoveRight Unit:=wdCharacter, Count:=X, Extend:=wdExtend sRaw = Selection sProc = Replace(sRaw, " ", "") X = 1000 - Len(sProc) Wend Selection.Collapse Direction:=wdCollapseEnd Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend Selection.Range.HighlightColorIndex = wdYellow Selection.Collapse Direction:=wdCollapseEnd Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend Wend End Sub
Démarrez cette macro avec le point d’insertion au début du document. La macro saisit alors mille caractères, attribue cette sélection à une variable (sRaw), crée une variable dont tous les espaces sont supprimés (sProc) et calcule ensuite la longueur de sProc. S’il est inférieur à 1 000, la sélection est étendue par le nombre de caractères qu’elle était courte et le processus est répété. Lorsque la sélection contient 1 000 caractères non-espace, la surbrillance est définie et la macro passe au bloc de caractères suivant.
_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 (7871) 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-Highlighting_Every_Thousandth_Character [Soulignant chaque millième caractère]
.