Extraire d'un texte ordinaire le nombre de chaque mot différent ?

Signaler
Messages postés
34
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
20 janvier 2020
-
m@rina
Messages postés
15718
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 janvier 2020
-
Bonjour, comment Extraire d'un texte word ordinaire le nombre de chaque mot différent ? Par ex lorsqu'on postule sur des Termes de Références d'un poste, il est utile de repérer rapidement combien de fois les mots clés apparaissent. Je n'ai toujours pas trouvé. Merci si vous avez la solution.



Configuration: Windows / Edge 18.17763

2 réponses

Messages postés
15718
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 janvier 2020
8944
FVR812
Messages postés
34
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
20 janvier 2020
2
Merci Marina, effectivement ne serait-ce qu'avec rechercher tu as le nombre.
Ce que je voudrais (je suis exigeant), c'est un procédé fonctionnel qui te sorte d'un texte word, sans que tu aies à choisir le mot, les nombres de tous les mots différents. Pour analyser un TdR ou même un ouvrage quelconque ça ferait gagner un temps fou. Si jamais toi ou un(e) autre tu ont ça sous la main … qu'es ce que ça m'arrangerait !
m@rina
Messages postés
15718
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 janvier 2020
8944
Faire une macro pour ça donnerait un résultat qui prendrait un temps infini car la macro devrait boucler sur chaque mot.

Il y a en ligne des outils pour ça, comme par exemple
https://www.dcode.fr/compteur-mots
http://textalyser.net/

et d'autres que je ne connais pas.

m@rina
Messages postés
23216
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2020
5870
Bonjour,
Salut m@rina :-)

un essai de macro quand même.
Je pense que ça pourra être assez rapide même sur un grand texte.
Je ne liste que les mots d'au moins 3 lettres et cités au moins 2 fois.
Tu pourras adapter la macro pour restreindre un peu plus.
Sub compteMots()
    Dim wd As Range, dict, k, result(), i As Long, tmp
    Dim doc As Document, tabl As Table
    Set dict = CreateObject("Scripting.Dictionary")
    For Each wd In Selection.Words
        tmp = Split(LCase(wd.Text), "'")
        For i = 0 To UBound(tmp)
            ' compte mots de plus de 3 lettres
            If Len(tmp(i)) > 3 Then If dict.Exists(tmp(i)) Then dict(tmp(i)) = dict(tmp(i)) + 1 Else dict(tmp(i)) = 1
        Next i
    Next wd
    For Each k In dict.keys
        If dict(k) <= 1 Then dict.Remove k    'suppression mots cités 1 seule fois
    Next k
    If dict.Count > 0 Then
        Set doc = Documents.Add
        Set tabl = doc.Tables.Add(Range:=Selection.Range, NumRows:=dict.Count + 1, numcolumns:=2)
        tabl.Cell(1, 1).Range.Text = "Mot": tabl.Cell(1, 2).Range.Text = "Cpt"
        For Each k In dict.keys
            i = i + 1
            tabl.Cell(i, 1).Range.Text = k
            tabl.Cell(i, 2).Range.Text = dict(k)
        Next k
        tabl.Sort True, 2, wdSortFieldNumeric, wdSortOrderDescending
        tabl.Borders.Enable = True
    End If
    Set dict = Nothing
End Sub


fichier de test avec la macro : https://mon-partage.fr/f/6hjLwyF8/
eric

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
FVR812
Messages postés
34
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
20 janvier 2020
2
Merci, j'essaie et je te dis. Bien cordialement.
m@rina
Messages postés
15718
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 janvier 2020
8944
Bonjour eriiic,

Impeccable ta macro ! Je valide ;))

Je me suis permise de la relayer sur mon site :
http://faqword.com/index.php/word/outils-edition/1066-comment-dans-un-document-compter-le-nombre-d-occurrences-de-chaque-mot

A +
m@rina
eriiic
Messages postés
23216
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2020
5870
Tu as très bien fait :-)
Mais peut-être faut-il la fignoler un peu plus si le premier jet parait correct.
J'ai déjà remarqué, et traité, l'apostrophe qui était considérée comme une lettre normale et "l'un" comptait comme un seul mot. Si tu en connais d'autres ?
Je pensais sélectionner tout le texte si aucune sélection n'est faite, avec confirmation.
Et éventuellement ajouter une boite de dialogue pour paramétrer taille mini des mots, compteur min à sortir et nombre max de mots.
m@rina
Messages postés
15718
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 janvier 2020
8944
Hello Eriiic,

Oui on peut tout ça... Cependant, c'est quelque chose qui est quand même rarement demandée, et comme j'ai dit, ça se fait aussi en ligne rapidement.

Mais bon, à partir du moment où je le mets sur mon site, oui on peut peaufiner. Si tu veux, je peux compléter. Sinon, je te laisse faire ! ;)
Sur mon site y a beaucoup de choses, mais depuis un bout de temps, je fais tout toute seule... Je l'ai commencé en 2004 et petit à petit, les auteurs divers et variés m'ont abandonnées !!! Et vraiment j'accepte avec plaisir les idées nouvelles de ceux qui en ont, et les auteurs de macro ! ;)

m@rina