Affichage d’un nombre de mots en direct (Microsoft Word)
Word affiche, dans la barre d’état, une variété d’informations qui peuvent vous aider pendant que vous écrivez. Par exemple, la barre d’état affiche le nombre de pages dans le document et le numéro de ligne sur la page en cours. Une chose qui serait utile est que la barre d’état affiche le nombre de mots dans le document, au fur et à mesure de la saisie.
Cependant, une telle fonctionnalité n’est pas intégrée à Word. La barre d’état n’est pas reconfigurable via une macro, sauf pour afficher ou masquer toute la barre ou y écrire un message. Coder une macro qui écrit en permanence un message dans la barre d’état signifierait que les informations normales ne seraient pas affichées, donc une solution utilisant la barre d’état n’est probablement pas acceptable.
Il est possible d’écrire une macro qui vérifierait en permanence le nombre de mots dans un document, puis afficherait le résultat dans une autre zone du document, telle que la barre de titre ou un bouton de barre d’outils. Selon le type de système dont vous disposez, une telle solution peut ne pas être acceptable; vous devrez effectuer des tests pour voir si c’est le cas. Le code interne pour calculer le nombre de mots d’un document est plutôt lent, d’autant plus que vos documents s’agrandissent. Cela signifie que la vérification constante du nombre de mots pourrait ralentir l’ensemble de votre système, peut-être à un degré inacceptable.
Avec cette mise en garde à l’esprit, considérez l’ensemble de macros suivant:
Sub AutoExec() NumberOfWords End Sub Sub NumberOfWords() Dim lngWords As Long Dim myRange As Range With Word.Application If .Windows.Count > 0 Then Set myRange = ActiveDocument.Content lngWords = myRange.ReadabilityStatistics(1).Value .Caption = Format(lngWords, "##,##0") & " words - Microsoft Word" Else .Caption = "Microsoft Word" End If .OnTime Now + TimeValue(OnTm(lngWords)), "NumberOfWords" End With End Sub Private Function OnTm(ByVal lngWd As Long) As String Select Case lngWd \ 1000 Case 0 To 10 OnTm = "00:00:01" Case 11 To 20 OnTm = "00:00:05" Case 21 To 30 OnTm = "00:00:10" Case 31 To 40 OnTm = "00:00:15" Case Else OnTm = "00:00:20" End Select End Function
Il existe trois macros incluses dans cet ensemble, chacune effectuant une tâche différente. La première macro, nommée AutoExec, s’exécutera automatiquement à chaque démarrage de Word. Son seul objectif est d’appeler la macro suivante, NumberOfWords, pour la première fois.
La macro NumberOfWords est la bête de somme de cet ensemble. Il vérifie si des fenêtres sont ouvertes dans Word. Si tel est le cas, il appelle le codage interne de Word pour déterminer le nombre de mots dans le document. Il formate ensuite la sortie et l’affiche dans la barre de titre de la fenêtre.
Si aucune fenêtre n’est ouverte, la macro affiche simplement « Microsoft Word » dans la barre de titre.
La dernière chose que fait NumberOfWords est de se dire quand s’exécuter à nouveau. Pour ce faire, il utilise la fonctionnalité OnTime de VBA, en définissant l’heure de redémarrage sur les 20 prochaines secondes. C’est là que la troisième macro, OnTm, entre en jeu. Il examine le nombre de mots dans le document actuel et détermine l’intervalle entre les exécutions de la macro NumberOfWords. S’il y a 10 000 mots ou moins dans votre document, la macro est exécutée toutes les secondes. S’il y a 11 000 à 20 000 mots, il est exécuté toutes les cinq secondes, et ainsi de suite.
La raison de cette vérification a été abordée plus tôt dans cette astuce: le calcul du nombre de mots et le formatage des informations de la barre de titre peuvent prendre un certain temps (en terminologie VBA), et si votre document est volumineux, cela peut entraîner des retards indésirables et visibles dans la mise à jour de votre document. Vous pouvez, si vous le souhaitez, jouer avec le codage dans la fonction OnTm pour déterminer la meilleure répartition des délais pour les types de documents que vous utilisez.
_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 (1608) s’applique à Microsoft Word 97, 2000, 2002 et 2003.