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

  • Initiateur de la discussion Initiateur de la discussion Lisa C
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour