Les mots qui ressortent le plus de fois sur plusieurs phrases

Résolu/Fermé
geoseohat - 11 août 2019 à 06:01
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 12 août 2019 à 01:05
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

2 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 11 août 2019 à 09:11
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
11 août 2019 à 11:15
et ?
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
Modifié le 11 août 2019 à 12:03
Bonjour eric

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

Amicalement
Via
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
11 août 2019 à 12:33
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 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
11 août 2019 à 14:04
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
11 août 2019 à 15:47
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 août 2019 à 08:33
Bonjour

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


1
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