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

  • Initiateur de la discussion Initiateur de la discussion Henri K.
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 :

[table="width: 500"]
[tr]
[td].Net[/td]
[td]3[/td]
[/tr]
[tr]
[td]Kerberos[/td]
[td]2[/td]
[/tr]
[tr]
[td]SQL Server[/td]
[td]2[/td]
[/tr]
[/table]

...etc.

Merci pour votre aide,

Henri K.
 
Dernière modification par un modérateur:
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😀28
=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

Dernière édition:
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.
 
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:
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😀28
=FrequenceMots(A2:A28;"|")
-valider avec maj+ctrl+entrée

Boisgontier
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour