Recherche d'une combinaison de mot clef dans un champ texte

Bonjour,

je n'ai pas trouvé ou n'ai pas su adapter les codes proposés.

Je souhaite dans une cellule contenant du texte, identifier si j'ai une combinaison de plusieurs mot clef.

par exemple j'ai la phrase suivante:

je veux manger du pain dans la cuisine

j'ai mes clusters suivants: verbe, pronom, localisation,

ces clusters sont définis par les mots clefs suivants,

verbe --> vouloir, manger, prendre

pronom--> je, tu, il, elle

localisation --> cuisine, salon, jardin

ma règle est la suivante si j'ai un verbe et un pronom et une localisation je retourne 1 dans la cellule sinon 0.

Merci de votre aide,

bonsoir

une proposition

14xavier31.xlsm (17.09 Ko)

Bonjour,

Je n'ai pas la possibilité de télécharger des fichiers sur mon ordinateur; serait-il possible d'écrire le code directement dans le champ texte de la réponse?

Cordialement,

bonjour,

voici le code, il s'agit d'une fonction personnalisée

pour que la fonction fonctionne, tu dois créer une feuille nommée clusters avec pour chaque colonne, un entête de colonne qui contiendra le nom du cluster et dans la colonne tous les mots du cluster. le premier cluster doit se trouver en colonne A, il ne peut pas y avoir de colonne vide entre 2 clusters. de même il ne peut pas y avoir de cellule vide entre 2 mots d'une même liste.

(conjugaison, pluriels, féminin sont à prévoir explicitement dans la liste des mots)

Function cp(p, ParamArray cl())
'fonction qui vérifie si une phrase (p) comporte des mots appartenants aux clusters dont le nom est donné en paramètre
'la fonction retourne 1 si au moins un mot par cluster a été trouvé dans la phrase
'appel de la fonction =cp(phrase,"cluster1","cluster2","cluster3", ..,"clustern")
' cluster1 à clustern sont des noms d'entêtes des colonnes de la feuille cluster qui contient les mots appartenant aux clusters
'soit les 3 clusters verbe,pronom,localisation contenant respectivement les mots
' veux,manger,veut
' je tu il
' salon cuisine, jardin
'
' l'appel de la fonction pourrait se faire ainsi
' =cp(A1,"verbe","pronom","localisation")
'
    Dim f()    ' tableau indiquant si un mot a été trouvé dans chaque cluster
    Application.Volatile
    ReDim f(LBound(cl) To UBound(cl))
    t = Split(p)    ' t tableau contenant chaque mot de la phrase
    c = 0    ' compteur du nombre de clusters différents dans lesquels un mot a été trouvé
    With Sheets("clusters")
        'dc dernière colonne non vide sur clusters
        dc = .Cells(1, Columns.Count).End(xlToLeft).Column
        For i = 1 To dc
            dl = .Cells(Rows.Count, 1).End(xlUp).Row
            If dl > maxdl Then maxdl = dl    'maxdl dernière ligne non vide sur tous les clusters
        Next i
        Set pl = Range(.Cells(1, 1), .Cells(maxdl, dc))    'pl plage de recherche des mots
        For i = LBound(t) To UBound(t)    'on prend chaque mot de la phrase
            Set re = pl.Find(t(i), lookat:=xlWhole)    'on recherche le mot dans la feuille clusters
            If Not re Is Nothing Then    'si mot trouvé
                For j = LBound(cl) To UBound(cl)    'on recherche dans quel cluster
                    If cl(j) = .Cells(1, re.Column) Then    'j N) de colonne du cluster
                        If f(j) = False Then    ' si pas encore de mot trouvé dans ce cluster
                            c = c + 1    'on ajoute 1 au compteur des clusters différents
                            f(j) = True    'on a trouvé un mot dans ce cluster
                        End If
                        Exit For
                    End If
                Next j
            End If
        Next i
        If c = (UBound(cl) - LBound(cl)) + 1 Then cp = 1 Else cp = 0 'retourne 1 ou 0

    End With
End Function
Rechercher des sujets similaires à "recherche combinaison mot clef champ texte"