Recherche une série de mots dans une série de cellule

Bonjour à tous,

Je tiens à m'excuser par avance si la réponse exacte à mon soucis est déjà dans un fil précédent... Mais rien de ce que j'ai pu trouver jusque là ne m'apporte la solution.

La situation : j'ai des tableaux contenant entre 5000 et 150000 lignes. Je dois extraire de ces tableaux toute une série d'articles.

Les passer en revue ligne par ligne est évidemment fastidieux, ainsi qu'un simple filtre ou qu'un CTRL-F... Quelque soit la méthode utilisée jusque maintenant, il y a toujours des articles qui passent entre les mailles du filet. D'où mon idée d'automatiser la recherche.

Pour plus de clarter, je vais joindre le fichier prototype allégé.

En feuille 1, les milliers de lignes...

En feuille 2, la liste de mots recherchée (Une centaine)...

Feuille 1 - Colonne B : mon premier essai... Formule utilisée : =SI(SOMMEPROD(N(ESTNUM(TROUVE('Liste de mots à chercher'!$A$1:$A$84;A14))))>0;1;""). Cette formule fonctionne en partie seulement... En effet si dans la colonne A est mentionné Aérosol, et que mon mot de recherche est aérosol, il ne le trouve pas. J'avais essayé avec "CHERCHE" au lieu de trouve, mais là, j'ai le soucis inverse... Si je cherche le mot précis "Vin", la formule me renvoit un test ok pour une cellule contenant le mot "vinyl"...

Feuille 1 - Colonne C : l'essai que je pensais être bon mais qui ne l'est toujours pas... Pensant que la fonction TROUVE allait m'aider à trouver les mots précis, j'ai dupliqué mes mots clés suivant les différentes casses susceptibles d'être utilisées dans les fichiers qu'on m'envoit (Voir feuille 2 colonne B)... Donc par exemple pour Aérosol, je recherche désormais Aérosol, aérosol, AEROSOL, Aerosol, aerosol... Mais maintenant, je me retrouve avec des résultats positifs pour lesquels je ne vois pas du tout le lien entre la cellule et les mots cherchés...

Quelqu'un pourrait-il m'aider parce que j'avoue que je patauge désormais complètement, n'étant pas du tout un expert en formule excel et encore moins en VBA...

Merci par avance pour votre aide,

35projet-catalogue.xlsx (278.86 Ko)

Salut Sedwick,

bienvenue chez nous et... merci de m'avoir indirectement mis au défi de résoudre ton problème, chaque cas me faisant avancer en VBA.

Cela dit, une petite recherche sur "Google est ton ami" t'aurait permis de trouver la petite perle suivante, adaptée à ton cas :

    If LCase$(Range("A" & x).Value) Like "*" & LCase$(TextBox1.Text) & "*" Then

Encore un petit truc que je vais garder bien au chaud!

Dans ton fichier, que tu adapteras à tes besoins, tu tapes ta recherche dans la TextBox. Quand le mot est complet, tu quittes la TextBox et les n° de lignes où apparaissent ton mot s'affichent en colonne D.

Pssst : aerosol ne donne rien, il faut l'accent!

Bonne journée!

A+

56projet-catalogue.xlsx (278.86 Ko)

J'ai fait pas mal de recherche sur l'ami google, mais en ne regardant que les formules j'avoue, pas les codes VBA...

En VBA, je suis plutôt au niveau abyssal, et encore, les beaux jours... Du coup, tu me montres une très jolie ligne de code, mais je ne sais pas quoi en faire...

Par contre, je vois que tu parles de mot dans une Textbox. Du coup, dans ta solution, je devrais chercher mot par mot? Impossible d'injecter tous les mots d'un coup?

C'est un check qui se répétera plusieurs fois par an, dans des cas différents, pour des provenances différentes... J'ai environ ce mois-ci 300000 lignes à passer en revue, et les mises à jours des fichiers auront lieu plusieurs fois par an pour certains... Je ne peux pas me permettre de perdre, ou de faire perdre, trop de temps en révision de fichier... Du coup, que la ligne incriminée par la présence d'un mot cherché dans une liste modifiable se coche, pour ainsi être filtrée, et que l'ensemble des lignes filtrées soit envoyé au créateur du fichier pour suppression me paraissait super pratique...

"Pssst : aerosol ne donne rien, il faut l'accent! "

Dans ce fichier-ci oui, mais pas dans deux autres...

Salut Sedwick,

en fait, ta première question ne me disait pas clairement ce qu'il fallait faire du résultat..., me semble-t-il, du moins!

Chacun ses faiblesses, vois-tu!

J'ai toute ma soirée devant moi pour t'aider mais encore faut-il que je sache avec précision et des points sur les i ce que tu attends EXACTEMENT!

Que dois-je faire avec ces lignes comprenant ces mots recherchés, les mettre où, comment, toutes, et si pas toutes, pourquoi?

Faut-il les retirer de TON fichier, est-ce ton fichier.................................................

Bref, tu as compris, explique-moi comme si j'étais un stagiaire boutonneux qui débarque à son premier jour de boulot après ses années de PlayStation...

Avec plaisir!

A+

Tous les "x" mois, je reçois des fichiers excel comprenant entre beaucoup, et énormément d'articles (1 articles par ligne du tableau excel - 1 ligne reprend les références, le prix, la description de l'article, son lien vers une photo hébergée, etc..). Certains fichiers sont légers (5000 lignes), d'autres sont bcp plus lourds. Un exemple est un fichier qui atteint 180000 lignes.

La page que je propose ici est fortement allégée puisque je montre uniquement la colonne avec les libellés, colonne qui m'intéresse pour faire mon "tri".

Pourquoi un tri...?

Eh bien, simplement parce que, dans ma société, tout n'est pas autorisé à être commandé par les utilisateurs...

Exemple : si le fournisseur propose du vin, je ne peux pas laisser faire, et je dois demander au fournisseur de retirer cette ligne-là de son fichier...

Les acheteurs ont les articles qu'ils ne veulent pas voir, le service sécurité à la sienne, les magasiniers ont les leurs, etc... Bref, on se retrouve donc avec une liste assez conséquente à devoir injecter dans le fichier proposé...

Ce que j'aurais souhaité, avec le moins de manipulations possible :

- Je reçois le fichier proposé par le fournisseur. (Ex : 10000 lignes)

- J'injecte la liste de mot (articles interdits sur site : vin, bière, eau, meuleuse, échelle, etc........ : exemple 100 mots clés) dans ce fichier au niveau de la colonne des descriptions d'article

- Les lignes dont les libellés articles contiennent un des mots de ma liste interdite se prenne une coche (exemple dans une colonne à la fin du tableau proposé). Exemple 1500 lignes sont "cochées"

- Je fais un filtre pour n'afficher que les lignes incriminées

- Je sauve cet ensemble de ligne.

- J'envoie au fournisseur pour lui demander d'éliminer ces 1500 lignes (En lui faisant remarquer au passage que je lui avais déjà demander de ne pas mettre ce genre d'article )

- Le fournisseur corrige et me renvoie le tableau (il ne fait désormais plus que 8500 lignes)

- Je réinjecte ma liste pour être certain que tout est désormais correct...

- C'est ok, je valide, et le fichier est désormais prêt à être utiliser...

Le soucis de tout cela, c'est que, tout les "x" mois, un nouveau fichier est chargé (mise à jour des prix, mise à jour des articles, nouveautés, etc...) et que du coup, d'autres articles "interdits" se retrouvent dans les nouveaux fichiers...

Vu comme ça ça fait un peu bricolage....

Ok, ça n'a pas l'air compliqué, au premier abord...

Les lignes interdites doivent-elles être copiées dans une autre feuille ou simplement cochées?

Simplement cochées, d'accord... mais dans quelle colonne? Une colonne convenue, je suppose! Ou faut-il colorer la ligne incriminée? Ou, ou, ou...

Eh, oui, je peux être ch... 8)

A+

Au premier abord non... Mais je dois dire que je commence à en avoir un joli mal de crâne...

Imaginons que le tableau va des colonnes A à M, les "coches" peuvent très bien aller en colonne O...

A partir du moment ou le filtre est dès lors très facile, je ne pense pas utile d'alourdir le processus avec un changement de couleur ou un recopiage dans une autre feuille...

Non non, pas ch..., précis

Colonne O !

ALEA JACTA EST ! 8)

A+

Bonjour Sedwick,

après moults efforts, j'ai finalement réussi à maîtriser la "perle" que j'avais trouvée.

J'te jure..., l'expérience...

Bref, tu atterris dans la feuille "Interdits", tu pousses le bouton et une quinzaine de secondes plus tard, tu obtiens en feuille "Check" la liste complète cochée et en feuille "Récap" la liste des références incriminées.

Pour ton prochain traitement, tu pourras te contenter de taper tes mots "interdits" en minuscule uniquement (en pensant tout de même aux accents et 'ç' qui pourraient être escamoté ou mélangés dans différentes orthographes).

Cela dit, ce "tri" accepte, par exemple, du correcteur TIPP en dévidoir mais pas en flacon... Pas évident, je sais...

Tu me fais un retour? Curieux de savoir!

A+

67catalogue.xlsm (249.45 Ko)

Suis impressionné...

Effectivement, ça ressemble bien à ce que je souhaitais...

Maintenant... Ma liste de questions

La version finale de ce fichier, sera dédiée à accueillir régulièrement différentes listes donc :

- Est ce que je peux écraser le tableau en feuille 1, par un autre tableau? L'analyse se fera t'elle tout de même sans soucis? Si oui, y a t'il tout de même une limite en nombre de ligne?

- Est-ce que je peux modifier la liste de mots-clé sans faire bugger l'analyse?

Afin de garder la version la plus légère possible mon idée serait :

- Lors des mises à jour, j'ouvre le nouveau fichier, et en même temps l'excel de test avec la macro. Je viens coller en colonne A et B respectivement les références et les libellés des articles. (En utilisant uniquement ces deux colonnes, on peut alors renvoyer la "coche" et le mot incriminé dans une colonne plus proche (Ex : colonne C et D). Je trie sur la coche et j'obtiens la liste d'article et leur référence.

- Suivant l'origine du fichier, je modifie ma liste de mots clés à chercher... (Des mots de recherche dans un thème peuvent donner des résultats permis, alors que dans un autre thème ils ne le sont pas, par exemple "Echelle", ou pour reprendre ton expérience : "Flacon").

J'ai fait un test en effacant le mot "sangle" de la liste de mots clés. Je pensais que ça fonctionnait, mais je remarque une différence entre le nombre de ligne cochées en feuille "Check" (197), et le nbre de lignes renvoyées en feuille "Recap"...

Merci de ton aide en tt cas...

Salut Sedwick,

pour répondre à tes questions :

  • tu peux changer ta liste de mots interdites autant que tu veux et relancer la recherche : pas de soucis !
  • aucune limite de nombre de lignes à tester puisque ce total se calcule depuis le haut de la feuille.
  • la différence entre lignes cochées et celles reprises dans RECAP doit s'expliquer par le fait que plusieurs lignes peuvent comporter plusieurs mots interdits. Un petit réglage à faire qui, en plus fera sans doute gagner du temps.
  • je pense supprimer (et tester le gain de temps) l'affichage de rappel du mot interdit à côté du coche (je suppose que tu n'en as pas besoin!?!?).
  • enfin, le plus important : la disponibilité du code pour les utilisations suivantes va passer, sûrement, par le fichier "PERSONAL" dans lequel chacun peut sauver des macros qui deviennent ainsi disponibles pour l'ensemble des fichiers (du moins, c'est ainsi que j'ai compris son utilité!)
Je n'ai encore jamais utilisé cette possibilité (que je dois explorer) ce qui passera par une ré-écriture du code afin que tout tienne dans une seule procédure, appelable... je ne sais pas encore comment non plus...

On apprend tous les jours...

Je reviens vers toi dès que je peux!

Bonne journée!

A+

Hello,

Pour l'affichage de rappel du mot, ça ne m'handicapera pas si il n'est pas présent, même si bien évidemment sa présence ne me dérange pas du tout.

Bonne journée à toi aussi,

Salut Sedwick,

oui, finalement, il me semble plus pratique de garder tout sous la main dans un fichier, comme tu le disais, dédié à cette tâche.

J'ai regroupé toute la procédure en feuille INTERDITS d'où part le test.

J'ai quelque peu complété l'interface. Tu fais un essai et tu me dis quoi (comme on dit chez nous!).

Tu peux écraser le tableau en feuille CHECK comme il te chante selon tes besoins, changer tes mots interdits en feuille INTERDITS autant que tu veux et relancer 100 X la recherche sur la journée si ça te fait envie tant que tu n'as pas un train à prendre 5 min plus tard...

J'ai ajouté deux contrôles sous le bouton de commande qui te permettront, selon la structure du fichier reçu, de tester la colonne A ou la B (A par défaut).

En fin d'exercice, les colonnes A et B en CHECK et RECAP seront ajustées à la taille de leur contenu.

Voilà, si tu as d'autres besoins ou envies, fais-moi signe!

Tu me renseignes le temps mis pour tes 300.000 lignes? Gag!

Avec plaisir!

A+

28catalogue.xlsm (270.63 Ko)

Hello,

Désolé de mon retard de réponse... J'ai eu un emploi du temps fort perturbé ces derniers jours, et je n'ai pas reçu ta notification de réponse... Du coup, je suis un peu à la ramasse... (Il me faudrait parfois deux cerveaux et des journées de 48h lol)

Je télécharge, je check et je te tiens au courant...

Encore merci pour ton aide...

Bonne journée à toi ,

Voilà le retour après test :

- J'ai testé un catalogue de 43000 lignes. Mon PC souffle, mais il fait le tour au bout de 6 minutes.

- Un Cat de 5000 lignes. En petite foulée tranquille...

Par contre soucis, je n'ai plus de retour de valeurs :

- Si je modifie la liste des mots-clés sur le fichier existant que tu as joins, aucun soucis. Il fait le test et me renvoit les erreurs.

- Si je copie-colle des nouvelles données en feuille A, il check, mais ne me renvoit plus rien en erreur. J'ai fait le test avec deux colonnes (Colonne A la référence article, Colonne B le libellé) avec test sur la colonne B et aussi, comme cela ne fonctionnait pas, un test uniquement en copier/collant la collone libellé en Colonne A et donc test sur colonne A...

Il y a de quoi rendre chèvre...

Bonjour Sedwick,

bienvenue dans des eaux plus calmes...

Peux-tu m'envoyer les fichiers qui ne répondent pas au test ? Explique-moi bien ce qui va et ne va pas !

A+

bienvenue dans des eaux plus calmes...

Merci...

J'ai essayé de joindre le fichier qui me pose soucis ici, mais il est trop gros... (1833 Ko)

Le soucis :

- Je télécharge ton fichier.

- J'ouvre le fichier, feuille 1 : je colle là en colonne A et B les 43000 lignes. La colonne A reprend des numéros d'articles, la colonne B les libellés.

- Je passe sur la feuille 2 : là, je choisis "Check B" et je lance la macro de test.

- Quelques minutes plus tard, le test se termine.

- Je n'ai aucun retour en feuille 3

- En feuille 1, les colonnes se sont effectivement adaptées en taille au contenu des celllules, mais je n'ai pas de retour de valeurs en colonne C et D (le mot trouvé et la coche "Non")

Pour ton fichier trop gros, tu vas sur CJOINT.COM et tu crées un lien vers ton fichier que tu copies ici, ce qui me permettra de le télécharger!

A+

Sauf erreur de manip voici :

Voici Sedwick,

3 lignes (très) mal placées...

J'ai supprimé tout ce qui pouvait ralentir le calcul mais mon ordi a quand même du ramer 7'30" !

Le seul indice qui t'indique que le traitement est terminé est le nombre d'articles incriminés qui s'affiche entre les deux Labels "CHECK A et B".

https://www.cjoint.com/c/FCcnFLoWoeB

A+

Rechercher des sujets similaires à "recherche serie mots"