Comment compter répétition ?

seyf63 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche une formule pour trouver les mots les plus répété dans une colonne avec des ensemble de mots.
J'ai fait beaucoup de recherche mais je n'ai trouve aue des formules qui ne correspondais pas a ce aue je voulais et idem pour les macro.

Voila un exemple du document excel que j'ai :


Et un exemple de ce que je voudrais serait :
Atem 5
audio 3
encoder 1

Avoir le mots les plus répétés dans une plage de cellule contenant des phrases.

Merci de votre aide en avance.

2 réponses

  1. rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour,

    Voici la macro :

    La feuille DATA est la feuille contenant vos cellules avec du texte
    La feuille RESULTATS aura le tableau final de comptabilisation des mots
    J'utilise la fonction usedrange pour chercher toutes les cellules qui ne sont pas vide dans la feuille DATA, à adapter selon votre besoin si vous voulez la recherche dans une seule colonne ou plage de données.
    ___________________
    Public Sub Comptage_mots()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    Dim sh As Worksheet
    Set sh = wb.Sheets("DATA")
    Dim sh_results As Worksheet
    Set sh_results = wb.Sheets("RESULTATS")
    Dim v_results() As Variant

    For Each c In sh.UsedRange.Cells
    vtemp = Split(c.Value, " ", -1, vbTextCompare)
    For i = 0 To UBound(vtemp)
    If (Not v_results) = -1 Then
    ReDim v_results(0 To 1, 0 To 0)
    v_results(0, 0) = vtemp(0)
    v_results(1, 0) = 1
    Else
    b = False
    For j = 0 To UBound(v_results, 2)
    If v_results(0, j) = vtemp(i) Then
    v_results(1, j) = v_results(1, j) + 1
    b = True
    Exit For
    End If
    Next j
    If b = False Then
    ReDim Preserve v_results(0 To 1, 0 To UBound(v_results, 2) + 1)
    v_results(0, UBound(v_results, 2)) = vtemp(i)
    v_results(1, UBound(v_results, 2)) = 1
    End If
    End If
    Next i
    Next c

    For i = 0 To UBound(v_results, 2)
    sh_results.Range("A1").Offset(i, 0).Value = v_results(0, i)
    sh_results.Range("A1").Offset(i, 1).Value = v_results(1, i)
    Next i
    End Sub
    ________________

    Meilleures salutations.
    1
  2. seyf63 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci beaucoup, c'est parfait c'est pile ce qu'il me faut. Je l'ai testé et oui je peux enfin trier mes données !! Il me reste plus qu'a mettre les données en minuscule et de les mettre au singulier.

    Merci mille fois !!
    0
    1. rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
       
      Pour les mettre en minuscule vous pouvez ajouter la fonction lcase() dans la macro aux bons endroits. Par contre pour ce qui est du singulier...ca va etre compliqué par voie informatique.
      Bonne journee
      0