Excel VBA : fonction de recherche avancée
danielc0 Messages postés 1859 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un fichier Excel que j'ai crée.
J'ai mis une liste de mots dans la colonne A et la source en colonne B.
Je souhaiterais à chaque fois mettre une liste dans la colonne D et avoir dans la colonne E les mots qui posent problème et dans la colonne F mettre en place par exemple un check avec un logo vert s'il ne trouve pas de mots et en rouge s'il trouve des mots dans la colonne A.
Par exemple, dans le fichier que je vous envoie j'ai une liste de mots :
1st Time
2nd Grade
ALL AMERICAN
All day
ALWAYS BE
ALWAYS THINKING
Bad Day To Be A Beer
BORN TO FISH FORCED TO WORK
Dans la colonne D, je cherche all american always be thinking back to school
Dans la colonne E, j'ai : ALL AMERICAN, ALWAYS BE , ALWAYS THINKING, Bad Day To Be A Beer, BORN TO FISH FORCED TO WORK
Je veux comme résultats uniquement : ALL AMERICAN, ALWAYS BE
Je ne comprends pas pourquoi il m'affiche tout le reste.
J'ai mis en place une fonction VBA qui fonctionne en cliquant sur ALT +F8 puis sur exécuter mais ça n'a pas l'air de fonctionner correctement.
Ce que je souhaite :
- Rentrer une liste de mots qui resteront dans la colonne A
- Rentrer la source dans la colonne B
- Rentrer une liste de mots ou phrases dans la colonne D pour vérifier s'il y a correspondance avec la colonne A ou non
- S'il ne trouve rien, je souhaite mettre dans la colonne E un check qui apparaît en vert
- S'il trouve, je souhaite que dans la colonne E, il me met une croix en rouge et dans F, il m'indique le ou les mots/phrases qui posent problèmes et pourquoi pas dans la colonne G, me mettre la ou les sources qui posent problèmes
J'ai mis du VBA pour que quand je rentre une liste dans la colonne D et que je met ALT+F8, il me met en rouge les mots/phrases qui posent problèmes mais ce n'est pas encore bon.
J'ai également mis en place un code pour que quand je supprime la liste, la colonne à côté se supprime également, pareille ce n'est pas encore au point.
Est-ce que quelqu'un peut m'aider à l'améliorer ou me dire ce que je dois modifier exactement, j'ai testé plusieurs modifications mais en vain.
Merci beaucoup pour votre aide.
P.S : voici le lien du fichier : https://www.cjoint.com/c/NGifXlcbM6K
- Excel VBA : fonction de recherche avancée
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
10 réponses
Bonjour,
Pas sûr d'avoir bien compris. Sans VBA, avec Excel 365, la formule :
=JOINDRE.TEXTE(", ";;REDUCE("";FRACTIONNER.TEXTE(E3;;", ");LAMBDA(x;y;SI(ESTNUM(CHERCHE(y;D3));ASSEMB.H(x;y);x))))
renvoie :
ALL AMERICAN, ALWAYS BE , Back to School
?
Daniel
Bonjour,
Ou est ce que tu mets cette formule, ça ne marche pas chez moi.
Merci
P.S : j'ai Excel 2013
La formule ne fonctionne pas avec Excel 2013. Il faut une solution par VBA. Est-ce que "back to school" est correct ?
Daniel
Essaie :
Sub test() Dim C As Range, Tabl As Variant, Txt As String Application.EnableEvents = False For Each C In Range("E2", Cells(Rows.Count, 5).End(xlUp)) Tabl = Split(C, ", ") Txt = "" For Each Item In Tabl If IsNumeric(Application.Search(Item, C.Offset(, -1))) Then Txt = Txt & ", " & Item End If Next Item Txt = Right(Txt, Len(Txt) - 2) C.Offset(, 1) = Txt Next C Application.EnableEvents = True End Sub
Daniel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionCe n'est pas ce que tu indiques ici :
"- S'il trouve, je souhaite que dans la colonne E, il me met une croix en rouge et dans F, il m'indique le ou les mots/phrases qui posent problèmes et pourquoi pas dans la "
C'est quoi une "Croix en rouge" ?????
Daniel
Alors je t'explique en détail :
J'ai ma liste de mots en colonne A
La source du problème en colonne B
Je colle ma liste en colonne D
En colonne E, je veux que ça vérifie si la colonne D concorde avec la colonne A, si c'est le cas => colonne E avec un logo de croix rouge, s'il ne trouve pas de concordance donc il me met le logo de check en vert
Et en colonne F, il me remet la source du problème TM ou CC, si c'est les deux, il me met TM, CC
Est-ce que c'est plus clair maintenant ?
Merci
Ecoute, je n'y comprends rien et je ne vais pas passer la nuit là-dessus. Pour quoi une partie de la colonne D est en rouge ? C'est quoi, des "logos" ? C'est des icônes ? Prends une cellule et explique très précisément ce que tu veux qu'on fasse. Sinon, je passe mon tour.
Daniel
On va faire plus simple, désolé si je m'exprime mal.
Je te donne un exemple :
Dans ma colonne A, j'ai une liste de mots tels que :
A2 : 1st Time / B2 : TM
A3 : 2nd Grade / B3 : CC
A4 : ALL AMERICAN / B4 : CC
A5 : All day
A6 : ALWAYS BE / B6 : CC
A7 : ALWAYS THINKING
A8 : Bad Day To Be A Beer
A9 : BORN TO FISH FORCED TO WORK
Dans ma colonne B, j'ai le motif du problème TM ou CC ou autres
Dans ma colonne D, j'ai rien, je vais coller à partir de D2 des listes de mots comme (sans virgule) :
D2 : 1st time dad beer song always be
D3 : always be kidding with dad
En E2, je veux cette réponse : 1st time, always be (couleur rouge car elle concorde avec la colonne A2 et A6) par contre si dans E2, rien ne concorde parfaitement, j'ai le mot "safe" par exemple en vert qui est marqué ou un icone qui sourit pour me dire que ça passe.
En F2 : j'aurais comme réponse : TM, CC (first time étant TM / always be étant CC), si rien ne concorde, ça sera vide
J'espère avoir été clair.
Merci beaucoup
Bonjour,
"par contre si dans E2, rien ne concorde parfaitement, j'ai le mot "safe" par exemple en vert qui est marqué ou un icone qui sourit pour me dire que ça passe."
Donne un exemple de ce cas.
"par contre si dans E2, rien ne concorde parfaitement"
Que fait-on dans ce cas ?
Alors non tu ne m'as pas bien compris.
Je voudrais déjà que la colonne D n'apparait pas en rouge vu qu'on va trouver les correspondance en colonne E.
Si dans la colonne E, on trouve des correspondances, les écrire et les mettre de couleur rouge (ce qui est négatif donc pas de smiley)
Si par contre, on ne trouve pas de correspondances, on a juste l'icone smiley (comme celle que tu as mis) qui doit apparaître pour dire que ça passe
La colonne F est bien, j'aime bien ce que tu as fais
Tu me fais perdre mon temps. J'abandonne. Prends une semaine et réfléchis à ce que tu veux VRAIMENT :
1. Pour la colonne E :
11:10 : "Si dans la colonne E, on trouve des correspondances, les écrire et les mettre de couleur rouge (ce qui est négatif donc pas de smiley)"
2. Pour la colonne D :
"Je voudrais déjà que la colonne D n’apparaît pas en rouge vu qu'on va trouver les correspondance en colonne E."
Trouve quelqu'un d'autre.
Daniel