[résolu] chercher et compter certains mots issus d'une liste dans une cellule

clichy

XLDnaute Junior
bonjour à tous,

je cherche mais ne trouve pas de reponses adéquates.

voila

je voudrais rechercher dans une cellule qui contient une phrase des mots d'une liste située dans une autre feuille.

de cette recherche, je voudrais compter combien il y a de mots (a priori différents) et ainsi avoir un ordre car je fais cette recherche sur plusieurs cellules différentes (plusieurs critères à analyser)

il me faudrait une macro automatique qui se déclenche quand la case est remplie
aujourd'hui j'ai une formule satisfaisante mais ma liste de mot s'agrandit et je dois reprendre manuellement la formule.
éventuellement, si il y a un moyen de simplifier la formule ou l'automatiser... j'aime autant car j'ai 10 cellules à faire.


je commence a y voir un peu clair dans le vba mais pas assez pour créer moi même une formule...

je vous remercie de votre aide
 

Pièces jointes

  • projet_veille.xlsx
    13.7 KB · Affichages: 59
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : chercher et compter certains mots issus d'une liste dans une cellule

Bonjour

En L18, tu peux faire directement avec
=SOMME((NB.SI($G$14;"*"&liste!M4:M13&"*")>=1)*1)

en matriciel, c'est à dire en validant la formule en appuyant sur les trois touches Ctrl, maj et entrée. Des accolades doivent alors apparaitre devant et après la formule.

Je te laisse appliquer la même méthode à M18.

@ plus
 

clichy

XLDnaute Junior
Re : chercher et compter certains mots issus d'une liste dans une cellule

merci pour vos réponses très rapides

@pierrejean > je vois le résultat mais ne parviens pas à voir la macro...
@ CISCO > ça marche nickel

la solution de pierrejean m'intéresse pour apprendre

merci à vous 2
 

pierrejean

XLDnaute Barbatruc
Re : chercher et compter certains mots issus d'une liste dans une cellule

Re

Les fonctions (dans le Module1)

Code:
Function note_bon(cellule)
tablo = Sheets("liste").Range("M4:M" & Sheets("liste").Range("M" & Rows.Count).End(xlUp).Row)
  For m = LBound(tablo) To UBound(tablo)
    If InStr(cellule, tablo(m, 1)) <> 0 Then
      note = note + 1
    End If
  Next
note_bon = note
End Function
Function note_mal(cellule)
tablo = Sheets("liste").Range("N4:N" & Sheets("liste").Range("N" & Rows.Count).End(xlUp).Row)
  For m = LBound(tablo) To UBound(tablo)
    If InStr(cellule, tablo(m, 1)) <> 0 Then
      note = note + 1
    End If
  Next
note_mal = note
End Function
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof