Index + Equiv avec contrôle chaine type ESTNUM

Résolu
bisemper Messages postés 5 Statut Membre -  
bisemper Messages postés 5 Statut Membre -
Bonjour,

Je planche sur un problème idiot depuis plusieurs heures sans réelles avancés.

Le problème est assez simple:
- Une cellule (A1) avec une chaine type (mots avec espaces): "Bonjour tout le monde"
- Un tableau (BDD) composé de 2 colonnes (A et B) avec X lignes

Le but du jeu est de vérifier si A1 existe dans BDD[B] et si oui de retourner sur la même ligne de contenu de A.

J'ai pensé naïvement que ça suffirait:

=INDEX(BDD;EQUIV($A$1;BDD[B];-1);1)

Le soucis c'est que B est composé de texte avec plusieurs mots et impossible d'avoir un résultat correct (même en modifiant le -1 en 0 ou 1).

Si dans A1 j'ai "Bonjour tout le monde" et que dans BDD[B] j'ai "Bonjour tout", ça passe, si j'ai "Bonjour personne" ça ne doit pas passer.

La fonction CHERCHE me retourne de bon résultat, mais je ne sais pas comment l'intégrer dans ma formule initiale, c'est là que j'aurai besoin d'un peu d'aide pour une solution alternative.

Merci d'avance

1 réponse

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour

    essayez avec:

    =SIERREUR(INDEX(BDD!B:B;EQUIV("*"&A1&"*";BDD!A:A;0));"")

    le code SIERREUR qui évite #N/A ne fonctionne qu'à partir d'excel 2007

    crdlmnt
    0
    1. bisemper Messages postés 5 Statut Membre
       
      Génial ça marche ! Merci beaucoup. je ne pensais pas qu'on pouvait mettre plusieurs conditions dans Equiv.

      Petite question, il y a une différence entre BDD!A:A et BDD[A] ? la première solution c'est une plage et l'autre une colonne directement? c'est tout?

      Merci encore.
      0
    2. bisemper Messages postés 5 Statut Membre
       
      J'ai parlé trop vite, A1 à plus de mots que ce qui se trouve dans BDD. Ta solution fonctionne dans l'autre sens:
      A1= Comment ça marche
      BDD= Comment ça marche
      => OK

      Mais mon cas de figure est plutôt celui ci:
      A1= Comment ça marche
      BDD= Comment ça
      => Doit être sur OK

      Le cas de figure qui ne doit pas passer:
      A1= Comment ça marche
      BDD= Comment ça va
      => Doit être sur NOK
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > bisemper Messages postés 5 Statut Membre
         
        Bonjour bisemper
        Salut à Vaucluse au passage ;)

        Il faut peut être passer par une macro pour effectuer la recherche dans ce sens car il faut boucler sur toutes les lignes de la BDD
        Si plusieurs items ont une correspondance il seront affichés

        http://www.cjoint.com/c/EIBk1RujHne

        ALT+F11 pour voir le code

        Cdlmnt
        Via
        0
    3. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Voyez ici le renvoi dans le tableau en jaune
      pour que la ligne soit sélectionnée,, il faut que le texte en A soit entiérement contenu dans le texte référence en G2
      au delà, je ne vois pas très bien ce que vous voulez
      https://www.cjoint.com/c/EIBk2BzdIZG
      crdlmnt
      0
    4. bisemper Messages postés 5 Statut Membre
       
      Merci pour vos retours, vos solutions m'ont donné une idée qui fonctionne:
      {=SIERREUR(INDEX(BDD;EQUIV($A$1;SI(TROUVE(BDD!B:B;&A&1);BDD!B:B);1);1);"")}

      Je me suis tourné vers le multi-conditionnel qui semble marché pour le moment. Via55, c'est clair que le vba aurait été l'idéal mais je n'ai pas de solution pour le faire fonctionner sur excel online :/
      Vaucluse, la solution ne fonctionne que si le mot recherché est au début, si je tape par exemple "ça marche", ça doit me le trouver sur F et K. Par contre c'est bien le reporting dans la colonne jaune, en le modifiant un peu je pourrai voir toute les lignes qui n'ont pas trouvées de catégorie.

      Je passe le post en résolu. Bon week-end !
      0