Si vous disposez d’un document qui inclut du texte dans différentes zones de texte, vous devez comprendre que si vous effectuez un décompte de mots, Word n’inclut pas les mots des zones de texte dans le décompte de mots qu’il renvoie. Si vous ne voulez connaître que le nombre de mots dans une zone de texte, il existe un moyen de contourner ce problème:

Sélectionnez simplement la zone de texte dont vous souhaitez compter les mots avant de lancer la fonction de décompte de mots. Word compte alors consciencieusement uniquement les mots dans la zone de texte, ignorant le reste du document.

Cependant, il y a une fois où cette technique de sélection avant comptage ne fonctionnera pas. Si vous avez plusieurs zones de texte contenant des mots et que ces zones de texte sont regroupées, la fonction de décompte de mots ne les reconnaîtra pas comme «dénombrables» si vous sélectionnez le groupe. En d’autres termes, pour compter les caractères dans les zones de texte qui composent le groupe, vous devez d’abord dissocier le groupe, puis compter chaque zone de texte.

De toute évidence, cela peut devenir fastidieux à faire encore et encore. Une façon de contourner ce problème consiste à utiliser une macro qui effectue ces mêmes étapes pour vous.

La macro suivante, TextBoxCount, parcourt toutes les formes de votre document. S’ils sont groupés, ils sont automatiquement dissociés. Il exécute ensuite un décompte de mots sur chaque zone de texte et renvoie une boîte de dialogue qui indique le nombre de mots et de caractères dans les zones de texte (collectivement) et le nombre de mots et de caractères dans l’ensemble du document, y compris les zones de texte.

Sub TextBoxCount()

Dim lngTBWords As Long     Dim lngTBChars As Long     Dim lngDocWords As Long     Dim lngDocChars As Long     Dim shpTemp As Shape     Dim wcTemp As Dialog     Dim bDone As Boolean

Application.ScreenUpdating = False

Do         bDone = True         For Each shpTemp In ActiveDocument.Shapes             If shpTemp.Type = msoGroup Then                 shpTemp.Ungroup                 bDone = False             End If         Next shpTemp     Loop Until bDone

'Get count in main document     Selection.HomeKey Unit:=wdStory     Set wcTemp = Dialogs(wdDialogToolsWordCount)

wcTemp.Update     wcTemp.Execute     lngDocWords = wcTemp.Words     lngDocChars = wcTemp.Characters

'Step through shapes and add counts     lngTBWords = 0     lngTBChars = 0     For Each shpTemp In ActiveDocument.Shapes         shpTemp.Select         wcTemp.Execute         lngTBWords = lngTBWords + wcTemp.Words         lngTBChars = lngTBChars + wcTemp.Characters     Next shpTemp     lngDocWords = lngDocWords + lngTBWords     lngDocChars = lngDocChars + lngTBChars

Application.ScreenUpdating = True     MsgBox Str(ActiveDocument.Shapes.Count) _       & " text boxes found with" & vbCr _       & Str(lngTBWords) & " word(s) and" & vbCr _       & Str(lngTBChars) & " characters" & vbCr & vbCr _       & " In the total document there are" & vbCr _       & Str(lngDocWords) & " word(s) and" & vbCr _       & Str(lngDocChars) & " characters"

End Sub

N’oubliez pas que cette macro dissocie tout regroupement effectué précédemment dans le document. Pour cette raison, vous souhaiterez peut-être exécuter la macro après avoir enregistré votre document, puis supprimer le document (le recharger à partir du disque) après avoir obtenu votre décompte.

_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 (1839) s’applique à Microsoft Word 97, 2000, 2002 et 2003.