Isao se demande s’il existe un moyen de construire facilement une liste de tous les mots uniques d’un document. Il n’a pas besoin de savoir combien de fois chaque mot apparaît; il a juste besoin de la liste de mots uniques. De plus, les variations majuscules et minuscules sur le même mot doivent compter comme le même mot.

Il n’y a pas de fonction ou d’outil Word intégré pour ce faire. Cependant, dans VBA, vous pouvez accéder à la collection Words, qui comprend tous les mots du document. Dans cet esprit, vous pouvez créer une macro qui crée une liste triée de mots uniques dans le document, puis ajoute ces mots à la fin du document.

Sub UniqueWordList()

Dim wList As New Collection     Dim wrd     Dim chkwrd     Dim sTemp As String     Dim k As Long

For Each wrd In ActiveDocument.Range.Words         sTemp = Trim(LCase(wrd))

If sTemp >= "a" And sTemp <= "z" Then             k = 0             For Each chkwrd In wList                 k = k + 1                 If chkwrd = sTemp Then GoTo nw                 If chkwrd > sTemp Then                     wList.Add Item:=sTemp, Before:=k                     GoTo nw                 End If             Next chkwrd             wList.Add Item:=sTemp         End If nw:

Next wrd

sTemp = "There are " & ActiveDocument.Range.Words.Count & " words "

sTemp = sTemp & "in the document, before this summary, but there "

sTemp = sTemp & "are only " & wList.Count & " unique words."



ActiveDocument.Range.Select     Selection.Collapse Direction:=wdCollapseEnd     Selection.TypeText vbCrLf & sTemp & vbCrLf     For Each chkwrd In wList         Selection.TypeText chkwrd & vbCrLf     Next chkwrd End Sub

Notez que chaque mot du document est extrait, converti en minuscules, puis ajouté à la collection wList, dans l’ordre trié.

Les mots ne sont ajoutés que s’ils sont alphabétiques (ainsi, les nombres sont exclus, tout comme la ponctuation), et la macro ne prête aucune attention à la casse des mots. Vous devez également être conscient que la macro ne regarde que les mots dans le corps principal du document. Il n’inclut aucun mot dans les emplacements tels que les en-têtes, les pieds de page, les zones de texte ou les formes.

La macro pourrait facilement être modifiée pour tenir compte des besoins variables. Par exemple, vous pouvez demander à la macro de coller la liste de mots dans un document séparé plutôt qu’à la fin du document actuel. Tout ce que vous auriez à faire est d’insérer cette ligne avant la ligne de sortie affichée en deuxième ici:

sTemp = "There are " & ActiveDocument.Range.Words.Count & " words "

sTemp = sTemp & "in " & ActiveDocument.Name & ", but there "

sTemp = sTemp & "are only " & wList.Count & " unique words."



Documents.Add     ActiveDocument.Range.Select     Selection.Collapse Direction:=wdCollapseEnd     Selection.TypeText vbCrLf & sTemp & vbCrLf     For Each chkwrd In wList         Selection.TypeText chkwrd & vbCrLf     Next chkwrd End Sub

Notez qu’il n’y a eu qu’un seul changement de fond dans la macro: L’ajout de la méthode « Documents.Add » pour créer le nouveau document pour le résumé.

Pour d’autres idées sur la façon d’extraire des mots d’un document, y compris des macros qui enregistrent la fréquence des mots, vous pouvez vous référer à cette astuce:

link: / wordribbon-Generating_a_Count_of_Word_Occurrences [Génération d’un nombre d’occurrences de mot].

_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 (7697) s’applique à Microsoft Word 2007, 2010, 2013 et 2016.