Fonction detection des mots cles et comptage

Fermé
wuhrlinanthony Messages postés 52 Date d'inscription mercredi 29 juillet 2015 Statut Membre Dernière intervention 5 juillet 2017 - 4 août 2015 à 13:31
via55 Messages postés 14408 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 mai 2024 - 4 août 2015 à 14:51
Bonjour ,

Etant un débutant en VBA, je viens demander votre aide. Je voudrais créer une fonction qui permettrait de lire les mots qui sont dans une cellule et de me copier (dans des cellules séparer) le top 3 des mots les plus utilisés dans la cellule sélectionner et le nombre de fois ils ont été écris dans la cellule.

Je ne vois pas du tout comment commencer...

Merci d'avance pour votre aide.
A voir également:

1 réponse

via55 Messages postés 14408 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 mai 2024 2 706
4 août 2015 à 14:51
Bonjour

Exemple de fonction pour compter les 3 mots les plus fréquents
A mettre dans un Module (ALT+F11 pour ouvrir l'éditeur puis Insertion - Module - Copier-colelr la macro dans la page - Fermer l'éditeur
La fonction s'utilise comme n'importe qu'elle fonction Excel, syntaxe =mots(adresse cellule)
Ainsi = mots(A2) comptabilisera les mots de la chaine présente enA2
Function mots(machaine As String)
   Dim Tableau() As String
    Dim i As Integer
    'découpe la chaine en fonction des espaces " "
    'le résultat de la fonction Split est stocké  dans un tableau
    Tableau = Split(machaine, " ")
    max1 = 0
    max2 = 0
    max3 = 0
     'boucle sur le tableau
    For i = 0 To UBound(Tableau) - 1
    n = 1
    existe = 0
    ' boucle sur les items précédents du tableau
    For k = 0 To i - 1
    ' si le mot existe déjà (comparaison de mots en majuscules) existe passe à 1
    If UCase(Tableau(k)) = UCase(Tableau(i)) Then existe = 1
    Next k
    ' si existe=0 (pour en pas compter 2 fosi un mot précédemment comptabilisé)
    If existe = 0 Then
    ' boucle sur les items suivants du tableau
    For j = i + 1 To UBound(Tableau) - 1
    ' si identique (comparaison majucules)alors incrémentation de n
    If UCase(Tableau(j)) = UCase(Tableau(i)) Then n = n + 1
    Next j
    ' si n> max 1, 2 ou 3 on remplace le max par n et on releve la valeur dans tableau
    If n > max1 Then max1 = n: mot1 = i Else If n > max2 Then max2 = n: mot2 = i Else If n > max3 Then max3 = n: mot3 = i
    End If
    Next i
    ' nombre de fois et mots à retourner
    mots = max1 & " " & Tableau(mot1) & " - " & max2 & " " & Tableau(mot2) & " - " & max3 & " " & Tableau(mot3)
End Function


Cdlmnt
Via
0