Fréquence d'une valeur (un mot) non défini a priori

Phill123456 Messages postés 2 Statut Membre -  
JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à toutes et à tous,

J'ai 4000 cellules avec des dénominations d'entreprises composées de 1, 2 voire 3 mots.
Je souhaite connaître les termes qui ressortent le plus souvent
Une formule pour scanner cette plage ? A la limite un peu de VBA si pas possible autrement.

Merci beaucoup pour votre aide : )

3 réponses

  1. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour Phill123456
    Bonjour ccm81,

    Voici une macro qui scinde les textes en interprétant les caractères apostrophe, tiret et espace comme des séparateurs et qui fait le compte des mots obtenus.
    La liste et le compte des mots étant établis, il te restera à faire un tri décroissant pour obtenir le résultat attendu.
    Si j'ai bien suivi, la macro de ccm1 fait sensiblement la même chose mais ne prend en compte que le séparateur espace. Par contre le tri est en prime.

    https://www.cjoint.com/c/EBcrb2ghNlk

    A+
    0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonsoir Gyrus

    Bonne idée de prendre en compte plusieurs séparateurs
    Du coup, j'ai amélioré l'exemple
    https://www.cjoint.com/?3BcuIBMGZiM

    Cdlmnt
    0
    1. Phill123456 Messages postés 2 Statut Membre
       
      Merci bcp pour vos réponses c'est parfait. Dans la continuité de ma première question, je cherche des façons pertinentes et originales de "faire parler" ces 4000 noms d'entreprises. J'ai donc les termes qui ressortent le plus souvent, le nombre moyen de mots, de lettres, la même chose avec des quartiles etc. D'autres idées de statistiques sur une série de noms d'entreprises ?
      Merci encore vous avez gérés !
      0
    2. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      Bonjour à tous,

      pour avoir des idées de stat, il faudrait connaître les variables dont tu disposes.
      généralement, quand on cherche à comprendre ses données, on commence par une ACP. Je ne sais pas si ça s'applique à ce que tu veux faire.

      Sinon, tu peux ajouter une distance entre mots à tes données. Je ne sais pas ce que ça pourrait t'apporter mais comme c'est gratuit, pourquoi s'en priver.

      Function levenshtein(a As String, b As String) As Integer
      Dim i As Integer, j As Integer, cost As Integer, d() As Integer, min1 As Integer, min2 As Integer, min3 As Integer
      If Len(a) = 0 Then: levenshtein = Len(b): Exit Function
      If Len(b) = 0 Then: levenshtein = Len(a): Exit Function
      ReDim d(Len(a), Len(b))
      For i = 0 To Len(a): d(i, 0) = i: Next
      For j = 0 To Len(b): d(0, j) = j: Next
      For i = 1 To Len(a)
      For j = 1 To Len(b)
      d(i, j) = Application.WorksheetFunction.Min((d(i - 1, j) + 1), (d(i, j - 1) + 1), (d(i - 1, j - 1) + 1 + (Mid(a, i, 1) = Mid(b, j, 1))))
      Next
      Next
      levenshtein = d(Len(a), Len(b))
      End Function

      ce code à peine modifié vient de wikipedia.

      cordialement
      0