Microsoft 365 Comment trouver un mot d'une liste dans une phrase sur excel ?

Lisa C

XLDnaute Nouveau
Bonjour à tous,

J'ai une liste de mots précis (environ 30) et des phrases précises.
Pour chaque phrase j'aimerai savoir si elle contient un mot présent dans ma liste ou non. Si oui j'aimerai que le mot soit écrit dans la colonne d'à côté ou si c'est plus simple en terme de formule, que le mot apparaisse en rouge.
Je ne sais pas si ce que je demande est possible mais ce serait super si vous pouviez m'aider. J'ai très peu de connaissances en excel / aucune en VBA donc si vous pouviez vraiment détailler votre réponse se serait adorable.
Pour la compréhension je joins un fichier exemple ci dessous.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

En C2 (à tirer vers le bas), la formule suivante :
=LET(Items;FILTRE.XML("<mots><mot>"&SUBSTITUE(A2;" ";"</mot><mot>")&"</mot></mots>";"//mot");Liste;$E$2:$E$7;JOINDRE.TEXTE("; ";VRAI;FILTRE(Items;NB.SI(Liste;Items))))
La fonction LET permet de créer et calculer des variables transistoires pour calculer et afficher un résultat final.
Ici Items, grâce à la fonction FILTRE.XML contiendra un tableau des mots de la phrase
Liste, définit simplement la plage $E$2:$E$7 qui contient les mots à trouver.
N'ayant pas excel 365, je n'ai pas accès à la fonction FRACTIONNER.TEXTE aussi ai-je utilisé FILTRE.XML pour obtenir un tableau des mots de la phrase analysée.
Quant à NB.SI elle est chargée de compter le nombre (0 à n) de mots de items contenus dans la liste. si 0 le mot n'est pas retenu, si >0 le mot est retenu.
avec
JOINDRE.TEXTE si plusieurs mots sont trouvés, ils seront concaténés ensemble avec "; " (point-virgule et espace) pour séparateur.

Aide sur FRACTIONNER.TEXTE :
 

Pièces jointes

  • Mots à mots.xlsx
    10.2 KB · Affichages: 12

dysorthographie

XLDnaute Accro
Bonjour,
VB:
Function TxtTrouve(V As Range) As String
t = "'" & Join(Split(Replace(V, "'", "''")), "','") & "'"
Dim Cn As String, RS As Object: Cn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"""
Sql = "Select * from [Feuil1$D:D] where [Liste de mots ] in (" & t & ")"
 Set RS = CreateObject("ADODB.Recordset")
    RS.Open Sql, Cn, 1, 3
    
If Not RS.EOF Then TxtTrouve = RS.getstring(, , , " ") Else TxtTrouve = ""
RS.Close
Set RS = Nothing
End Function
 

Pièces jointes

  • Idée.xlsm
    15.8 KB · Affichages: 5

bsalv

XLDnaute Occasionnel
Code:
Sub rouge()
     For Each c In Range("A2:A6").Cells
          i = Evaluate("iferror(AGGREGATE(15,6,ROW(tabel1)/(ISNUMBER(SEARCH(Tabel1," & Chr(34) & c.Value & Chr(34) & "))),1),0)")
          c.Font.Color = RGB(0, 0, 0)
          If i > 0 Then
               s = Application.Index(Range("tabel1").EntireColumn, i)
               p = InStr(1, c.Value, s, 1)
               c.Characters(Start:=p, Length:=Len(s)).Font.Color = RGB(255, 0, 0)
          End If
     Next
End Sub
une macro ou avec formules (colonne C)
 

Pièces jointes

  • Idée.xlsm
    20.2 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T