Function OccurrencesMots(Cel As Range) As String
Dim Texte As String, Liste, Liste2, i As Long, j As Long, Dico, Res() As String
Liste = Array(",", ";", ".", "?", "!", "(", ")", "…", ":")
Texte = LCase(Cel.Value)
Texte = Replace(Texte, "'", " ")
Texte = Replace(Texte, "’", " ")
For i = LBound(Liste) To UBound(Liste)
Texte = Replace(Texte, Liste(i), "")
Next i
Texte = Replace(Texte, Chr(10), " ")
Texte = Application.Trim(Texte)
Liste = Array("a", "à", "de", "du", "l", "d", "le", "la", "les", "des", "on", "c", "s", "qu", "que", "qui", "quoi", "donc", "si", "une", "un", "se", "sa", "ses", "son", "et", "ou")
For i = LBound(Liste) To UBound(Liste)
Texte = Replace(" " & Texte & " ", " " & Liste(i) & " ", " ")
Next i
ReDim Res(0)
Texte = Application.Trim(Texte)
Liste = Split(Texte)
Set Dico = CreateObject("Scripting.Dictionary")
For i = LBound(Liste) To UBound(Liste)
If Dico.Exists(Liste(i)) Then
Liste2 = Dico.keys
j = Application.Match(Liste(i), Liste2, 0) - 1
Res(j) = Res(j) + 1
Else
Dico(Liste(i)) = Liste(i)
ReDim Preserve Res(Dico.Count - 1)
Res(UBound(Res)) = 1
End If
Next i
Liste2 = Dico.keys
Texte = ""
For i = LBound(Res) To UBound(Res)
Texte = Texte & Liste2(i) & " : " & Res(i) & Chr(10)
Next i
OccurrencesMots = Texte
End Function