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].