XL 2016 compter le nombre de mots avec un tableau associatif (recherche rapide)

Théo gestin

XLDnaute Nouveau
Bonjour tout le monde,

En faite, j'essaie de calculer le nombre d'occurrences de chaque mot qui existe dans la feuille 1. Il faut que je fasse un macro qui permet d'afficher le nombre de chaque mot sur la feuille 2.
J'ai fait un essai, mais il ma parait que le nombre d'occurrences n'est pas bon ( par exemple pour le mot "un" il m'affiche 21 alors qu'il apparait 96 fois) , ainsi que j'arrive pas à afficher le résultat dans la feuille 2.
Est ce que quelqu'un pourra m'aider SVP

Merci d'avance

Cordialement
 

Pièces jointes

  • Fichier 1.xlsm
    53.3 KB · Affichages: 17

youky(BJ)

XLDnaute Barbatruc
Bonjour Théo,
Voici une macro avec l'utilisation du dico
Voir en feuil2
Bruno
VB:
Sub nombre()
With Sheets("Feuil1")
Set dico = CreateObject("Scripting.Dictionary")
For Each c In .Range([a1], .[a65000].End(xlUp))
dico.Item(c.Value) = dico.Item(c.Value)
Next c
End With
With Feuil2
.[a1].Resize(dico.count, 1) = Application.Transpose(dico.keys)
For lig = 1 To dico.count
.Cells(lig, 2) = Application.CountIf(Feuil1.Range("A:A"), .Cells(lig, 1))
Next
End With
End Sub
 

Pièces jointes

  • nombre_mots.xlsm
    62.5 KB · Affichages: 4

Théo gestin

XLDnaute Nouveau
Bonjour Youky ,
Merci pour ton retour.
En faite, quand j'essaie d'exécuter la macro, j'ai un message d'erreur qui s'affiche en me disant qu'un composant Active X ne peut pas créer d'objet.
c'est dans cette ligne où y a une erreur "Set dico = CreateObject("Scripting.Dictionary")"
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Une macro sans dictionary.
VB:
Sub Compter()
Dim n1&, n2&
Application.ScreenUpdating = False
   With Worksheets("Feuil1")
      If .FilterMode Then .ShowAllData
      n1 = .Cells(.Rows.count, "a").End(xlUp).Row
      .Columns("a:a").Resize(n1).Copy .Cells(1, "c"): .Columns("d:d").Clear
      .Columns("c:c").Resize(n1).RemoveDuplicates Array(1)
      n2 = .Cells(.Rows.count, "c").End(xlUp).Row
      .Cells(1, "d").FormulaLocal = "=NB.SI(a$1:a$" & n1 & ";c1)"
      .Cells(1, "d").AutoFill Destination:=.Cells(1, "d").Resize(n2)
      .Cells(1, "d").Resize(n2) = .Cells(1, "d").Resize(n2).Value
   End With
End Sub
 

Pièces jointes

  • Théo gestin- compter mots- v1.xlsm
    48 KB · Affichages: 3
Dernière édition:

Discussions similaires

Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 233
Messages
2 086 465
Membres
103 224
dernier inscrit
VieuxSeb