Excel VBA : fonction de recherche avancée

RequinCraintif59 Messages postés 6 Date d'inscription lundi 8 juillet 2024 Statut Membre Dernière intervention 8 juillet 2024 - Modifié le 8 juil. 2024 à 07:53
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 - 9 juil. 2024 à 15:16

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

A voir également:

10 réponses

danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
8 juil. 2024 à 09:48

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


0
RequinCraintif59 Messages postés 6 Date d'inscription lundi 8 juillet 2024 Statut Membre Dernière intervention 8 juillet 2024
Modifié le 8 juil. 2024 à 10:17

Bonjour,

Ou est ce que tu mets cette formule, ça ne marche pas chez moi.

Merci

P.S : j'ai Excel 2013

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
8 juil. 2024 à 11:51

La formule ne fonctionne pas avec Excel 2013. Il faut une solution par VBA. Est-ce que "back to school" est correct ?

Daniel


0
RequinCraintif59 Messages postés 6 Date d'inscription lundi 8 juillet 2024 Statut Membre Dernière intervention 8 juillet 2024
8 juil. 2024 à 11:57

Oui si back to school est dans la liste de mots oui, ici dans la liste que je t'ai mis, elle n'y est pas donc elle ne doit pas apparaître dans le résultat.

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
8 juil. 2024 à 12:07

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


0
RequinCraintif59 Messages postés 6 Date d'inscription lundi 8 juillet 2024 Statut Membre Dernière intervention 8 juillet 2024
8 juil. 2024 à 15:41

ça ne marche pas, vu qu'il fait le calcul en fonction de la colonne E au lieu de la colonne D. C'est sur la colonne D que je vais coller mes listes de phrases.

Merci pour ton aide

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
8 juil. 2024 à 16:08

Oups, tu veux colorier la colonne D ?

Daniel


0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
8 juil. 2024 à 16:11

Ce 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


0
RequinCraintif59 Messages postés 6 Date d'inscription lundi 8 juillet 2024 Statut Membre Dernière intervention 8 juillet 2024
Modifié le 8 juil. 2024 à 16:41

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

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
8 juil. 2024 à 17:02

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


0
RequinCraintif59 Messages postés 6 Date d'inscription lundi 8 juillet 2024 Statut Membre Dernière intervention 8 juillet 2024
8 juil. 2024 à 17:25

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
 

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
9 juil. 2024 à 09:17

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 ?


0
RequinCraintif59
9 juil. 2024 à 10:25

Comme je l'ai dis, tu peux marquer safe en vert en E2 pour dire que tout va bien quand rien ne concorde.

Quand rien concorde, c'est une bonne nouvelle.

Si ça concorde, c'est un problème donc faut marquer les mots qui concordent et qui du coup pose problème.

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
Modifié le 9 juil. 2024 à 10:37

Est-ce que c'est ce que tu veux ?

(Erreur sur le positionnement de l'icône de la 3e ligne)

Daniel


0
RequinCraintif59
9 juil. 2024 à 11:01

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

0
RequinCraintif59
9 juil. 2024 à 12:27

Comme cela : 

 

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134 > RequinCraintif59
9 juil. 2024 à 12:31

Jamais de rouge, alors ? Tu te payes ma tête ?

Daniel

0
RequinCraintif59 > danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024
Modifié le 9 juil. 2024 à 13:42

Pas du tout au début, je voulais que les mots de la colonne D qui posent problème soit en rouge mais vu la difficulté de ce challenge, je ne voulais pas t'embêter davantage.

C'est pour cela.

Exemple : 

Voilà exactement ce que je veux, merci pour tout.

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134 > RequinCraintif59
9 juil. 2024 à 14:38

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

0
danielc0 Messages postés 1164 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 3 octobre 2024 134
9 juil. 2024 à 12:24

"Je voudrais déjà que la colonne D n'apparait pas en rouge vu qu'on va trouver les correspondance en colonne E."

Pour info, je n'ai pas modifié cette colonne. C'est ton classeur initial, d'où confusion dès le départ.

Colle une image avec le résultat voulu.

Daniel


0