XL 2013 Extraire des mots uniques d'une colonne à une liste avec le compte en nombre

Henri K.

XLDnaute Nouveau
Bonjour à tous,

C'est ma première inscription dans un forum Excel, je vous remercie par avance pour votre aide.

J'ai une colonne dont chaque cellule contient plusieurs mots séparés entre eux par un "|" (Alt Gr 6), comme par exemple :

IoT|Python|.Net|Java|Web|Oracle
MEGA
.Net|Kerberos|SQL Server
.Net|Kerberos|SQL Server|SAP Data Integration

Je voudrais pouvoir créer une liste dans une autre feuille qui :

* extraire les mots uniques et les lister dans une colonne, disons la colonne A
* compter le nombre de fois que chaque mot apparait et mettre ce nombre dans la colonne B, en face de chaque mot

Pour obtenir un résultat comme suite :

.Net3
Kerberos2
SQL Server2

...etc.

Merci pour votre aide,

Henri K.
 
Dernière modification par un modérateur:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Extraire des mots uniques d'une colonne à une liste avec le compte en nombre

Bonjour,

cf PJ

Calcule la fréquence de mots

-Sélectionner C2:D28
=FrequenceMots(A2:A28;"|")
-valider avec maj+ctrl+entrée

-La fonction est dans un module (Alt+F11)

Code:
Option Compare Text
Function FrequenceMots(champ As Range, sep)
  Set d1 = CreateObject("Scripting.Dictionary")
  d1.CompareMode = vbTextCompare
  temp = champ
  For Each c In temp
    If c <> "" Then
     a = Split(c, sep)
     For Each m In a
       If m <> "" Then d1(m) = d1(m) + 1
     Next m
    End If
  Next c
  Dim b()
  ReDim b(1 To Application.Max(Application.Caller.Rows.Count, d1.Count), 1 To 2)
  i = 1
  For Each c In d1.keys
    b(i, 1) = c: b(i, 2) = d1(c)
    i = i + 1
  Next
  Call tri(b, 1, d1.Count)
  FrequenceMots = b
End Function

Sans titre.jpg


JB
 

Pièces jointes

  • FonctionFrequenceMots.xls
    55 KB · Affichages: 59
  • Sans titre.jpg
    Sans titre.jpg
    22.9 KB · Affichages: 48
Dernière édition:

Henri K.

XLDnaute Nouveau
Re : Extraire des mots uniques d'une colonne à une liste avec le compte en nombre

Merci JB pour la réponse rapide, je n'aurai pas pu (encore) trouver la réponse tout seul... ;)

2 questions très bêtes :

* Si la colonne de source est dans une feuille et je veux que le résultat de recherche s'affiche dans une autre, il n'y a pas de problème ?

* Comment puis-je implémenter ta fonction dans mon fichier Excel ? (J'ai essayé de faire "View Code" dans l'onglet mais il n'y a rien. Je n'ai pas dû chercher dans le bon endroit ?)

Merci.

Henri K.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Extraire des mots uniques d'une colonne à une liste avec le compte en nombre

>* Si la colonne de source est dans une feuille et je veux que le résultat de recherche s'affiche dans une autre, il n'y a pas de problème ?

La fonction est dans un module, donc utilisable dans tout le classeur.

>* Comment puis-je implémenter ta fonction dans mon fichier Excel ? (J'ai essayé de faire "View Code" dans l'onglet mais il n'y a rien. Je n'ai pas dû chercher dans le bon endroit ?)

-Alt+f11
-Insertion module

JB
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,


>En fait je ne vois pas dans la macro où le séparateur "|" est pris en compte car ce symbole n'apparaît nul part

Il apparaît dans l'appel de la fonction et dans la fonction , il s'appelle sep:

-Sélectionner C2:D28
=FrequenceMots(A2:A28;"|")
-valider avec maj+ctrl+entrée

Boisgontier
 

Statistiques des forums

Discussions
312 305
Messages
2 087 083
Membres
103 458
dernier inscrit
Vulgaris workshop