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

Résolu
FVR812 Messages postés 126 Statut Membre -  
FVR812 Messages postés 126 Statut Membre -
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

3 réponses

  1. m@rina Messages postés 27911 Date d'inscription   Statut Modérateur Dernière intervention   11 569
     
    1
    1. FVR812 Messages postés 126 Statut Membre 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 !
      0
    2. m@rina Messages postés 27911 Date d'inscription   Statut Modérateur Dernière intervention   11 569
       
      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
      https://seoscout.com/tools/keyword-analyzer

      et d'autres que je ne connais pas.

      m@rina
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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

    0
    1. FVR812 Messages postés 126 Statut Membre 2
       
      Merci, j'essaie et je te dis. Bien cordialement.
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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.
      0
    3. m@rina Messages postés 27911 Date d'inscription   Statut Modérateur Dernière intervention   11 569
       
      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
      0
  3. FVR812 Messages postés 126 Statut Membre 2
     
    Bonjour, entre temps j'ai trouvé une autre solution hors EXCEL avec le logiciel gratuit NUAGE DE MOTS qui outre l'image des mots proportionnelle à leur nombre dans le texte (pour faire joli uniquement) , donne un fichier exportable sur EXCEL avec la liste de mots par fréquence d'apparition directement.
    0