Fonction detection des mots cles et comptage

wuhrlinanthony Messages postés 57 Statut Membre -  
via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   -
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.

1 réponse

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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