Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !

H

Henri K.

Guest
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




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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…