Occurrence de mot (complexe...)

Bonjour,

J'avais lancé une discussion début janvier, à laquelle 78chris avait donné la manip à faire sur PowerQuery, qui avait très bien marchée. https://forum.excel-pratique.com/viewtopic.php?f=2&t=134383&start=10

Voici ma demande de janvier (qui est donc résolue) :

J'ai un tableau avec une colonne et des milliers de lignes

Dans chacune de ces cellules, un ensemble de mots

Je voudrais qu' Excel me dise quels sont les mots qui ressortent le plus, et combien de fois

Par ex qu'il m'indique que le mot "chat" , qui se trouve en A3+A21+A27+xxx) ressort 858 fois

Maintenant c'est un peu plus complexe :

Toujours le même tableau mais avec DEUX colonnes.

Sur la 2ème colonne, face à chaque groupe de mots : un chiffre

Ce chiffre est une occurrence, le nombre de fois que ce groupe de mot est apparu.

>> Par ex. en A2 j'ai "porte carte" et en B2 j'ai le chiffre "18100" : ça signifie que l'expression exacte "porte carte" est apparue 18100 fois

En fait le chiffre colonne B revient au même qu'un nombre de ligne >>> donc "porte carte" > "18100", c'est comme si il y avait 18100 lignes "porte carte". On peut le voir autrement: c'est comme si rien que pour la ligne 1, le mot "porte" apparaissait 18100 fois et pareil pour le mot "carte".

[u]MA DEMANDE : Je voudrais savoir comment de fois, en tenant compte du chiffre en B, chaque mot apparaît.

[/u][

Y'a un moyen simple de le faire mais ça me prends BEAUCOUP trop de temps : un filtre sur un mot (exemple le mot "visite"), puis je fais somme de colonne B et je trouve 3380. Faudrait que Excel le fasse automatiquement, j'ai essayé sur powerQuery mais pas trouvé comment faire pour ça.

8forum.xlsx (14.11 Ko)

Bonjour,

avec une fonction personnalisée :

Function nbOccur(mot As String, plage As Range) As Long
    Dim datas, lig As Long
    If plage.Columns.Count = 2 Then
        datas = Intersect(plage, plage.Parent.UsedRange).Value
        For lig = 1 To UBound(datas)
            If InStr(datas(lig, 1), mot) > 0 Then nbOccur = nbOccur + Val(datas(lig, 2))
        Next
    End If
End Function

Syntaxe sur feuille :

=nbOccur(mot, plage
=nbOccur(D2;A:B))

Si tu as une liste énorme de mots, le mettre sous forme de Sub sera plus rapide. au détriment de la souplesse d'une fonction.

eric

5forum.xlsm (20.62 Ko)

Bonjour à tous

PowerQuery adapté

10compte-mots2.xlsx (25.25 Ko)

Messieurs vous êtes vraiment balaises sur Excel !

@ eriiic > oui j'aurai des listes de plusieurs milliers de lignes à traiter. que veut dire "sous forme de Sub" ?

@ 78chris > nickel. quelle est la procédure ? car je vais le faire ensuite sur pas mal de listes

RE

Si tu reprends mes explications du https://forum.excel-pratique.com/viewtopic.php?f=2&t=134383&start=10 il y a peu de changement

A l'étape Dépivoter on sélectionne la colonne Volume et plus CPC

A l'étape suivante, Regrouper par, faire la somme de Volume et non le comptage des lignes

oui j'aurai des listes de plusieurs milliers de lignes à traiter

ce qui compte c'est le nombres de mots à chercher, pas le nombre de lignes de la bdd.

Mais si tu as ce qu'il faut avec power query continue avec. C'est bien optimisé.

eric

Merci 78chris ça fonctionne nickel

Je trouvais pas pourtant là en effet ça se fait en 3 clic!

Rechercher des sujets similaires à "occurrence mot complexe"