Les mots qui ressortent le plus de fois sur plusieurs phrases

Résolu
geoseohat -  
eriiic Messages postés 25847 Statut Contributeur -
Bonjour,

J'ai 4 colonnes comportant dans chaque cellule des phrases différentes.
J'ai plusieurs centaines phrases dans chaque colonne.
Je souhaiterais savoir pour chaque ligne les valeurs qui ressortent le plus de fois et le nombre de fois qu'elles ressortent.

Exemple, voici 4 phrases :
- j'ai un chat noir à trois pattes
- j'ai un chien noir à quatre pattes
- j'ai un chien blanc à six pattes
-j'ai un chat blanc à quatre pattes

le mot chat ressort 2 fois
le mot chien ressort 2 fois
le mot noir ressort 2 fois
le mot blanc ressort 2 fois
le mot patte ressort 4 fois

Ce sujet est déjà ressorti mais j'ai l'impression que mon cas n'est pas tout à fait pareil car je ne connais pas au préalable les mots. Donc la formule doit deviner le mot qui ressort le plus de fois et calculer le nombre de fois qu'elle ressort. Sachant que dans chaque cellule il y a des phrases différentes plus ou moins longue.

Je me suis peut être mal exprimé mais au moins j'ai essayé :)

Bon casse-tête !




Configuration: Windows / Chrome 76.0.3809.100
A voir également:

2 réponses

eriiic Messages postés 25847 Statut Contributeur 7 279
 
Bonjour à tous,

avec une fonction personnalisée.
Perso je liste tous les mots de la longueur maxi.
Dans l'absolu il faudrait éliminer les pluriels. Mais vue la complexité il faudrait 1 semaine de boulot, plus une liste de toutes les exceptions. Donc non... ;-)
A moins de se contenter de supprimer le s final, seulement "mais" et "mai" seront comptés comme un même mot.
https://www.cjoint.com/c/IHlhgCrIYMz
Syntaxe :
=nbMax(plage, mini)
mini étant la longueur mini des mots à prendre en compte. Pour ne pas prendre à, un, etc
eric

2
eriiic Messages postés 25847 Statut Contributeur 7 279
 
et ?
0
via55 Messages postés 14730 Statut Membre 2 749
 
Bonjour eric

Très élégant et efficace, bravo !

Amicalement
Via
0
eriiic Messages postés 25847 Statut Contributeur 7 279
 
merci ;-)
Petite modif du fichier, j'avais oublié de mettre les chaines en minuscule avant comparaison :
https://www.cjoint.com/c/IHlkFyUjJdz
eric
0
via55 Messages postés 14730 Statut Membre 2 749
 
Re,

La chaleur doit me ramollir le cerveau, je m'aperçois seulement maintenant que ta fonction ne répond pas exactement à la demande, elle liste les mots les plus longs mais pas les mots les plus fréquents
Je propose donc d'adapter ta macro ainsi :
Function nbMax(plage As Range, mini As Long)
    Dim c As Range, tmp, i As Long, dict, maxi As Long, l As Long
    Set dict = CreateObject("Scripting.Dictionary")
    For Each c In plage
        tmp = Replace(Replace(Replace(Replace(LCase(c), "'", " "), Chr(160), " "), ",", " "), ".", " ")
        tmp = Split(tmp, " ")
        For i = 0 To UBound(tmp)
        l = Len(tmp(i))
            If l >= mini Then
                If dict.exists(tmp(i)) Then
                    dict(tmp(i)) = dict(tmp(i)) + 1
                Else
                    dict(tmp(i)) = 1
                End If
                If dict(tmp(i)) > maxi Then maxi = dict(tmp(i))
            End If
        Next i
    Next c
    nbMax = maxi & " occurences :,"
    
    For i = 0 To UBound(tmp)
    If dict(tmp(i)) = maxi Then nbMax = nbMax & ", " & tmp(i)
    Next
 
    nbMax = Replace(nbMax, ",,", "")
    Set dict = Nothing
End Function


Amicalement
0
eriiic Messages postés 25847 Statut Contributeur 7 279
 
oh oui, tu as raison.
C'était pour voir s'il y en avait un qui suivait... :-s
Je cours faire ma sieste ;-)
eric
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
Bonjour

Dans ta présentation tu as 2 égalités: "pattes" et "à" .... que fait on ?
cela pourrait être 3 égalités.... etc


1
Geoseohat
 
Bonjour Michel et merci de ta réponse .

Oui même le « à » est cités 4 fois c’était plus pour montrer ce que je voulais . L’idée est de lister les mots qui ressorte le plus de fois .cest dans un but marketing pour degager désolé tendance . C’est vrai que si je pouvais dégagera le »à «  ça m’arrangerai :)
0