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 faites référence à 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 (7870) s’applique à Microsoft Word 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban de Word (Word 2007 et plus tard) ici:

link: / wordribbon-Highlighting_Every_Thousandth_Character [Soulignant chaque millième caractère].