VBA Excel, programmation d'un filtre avancé : opérateur et/ou ne fonctionne pas

Résolu
fngoagouni Messages postés 22 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 3 mai 2010 - 3 juil. 2009 à 14:01
fngoagouni Messages postés 22 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 3 mai 2010 - 9 juil. 2009 à 23:38
Bonjour à tous,
J'ai un problème avec les fonctions de recherche de texte dans les filtre avancés de Excel.

Je voudrai proposer une recherche avec soit :
* un des mots saisi au moins
* tous les mots saisis

Je fabrique donc des requète qui prennent respectivement les formes:
* ( find("voiture",Referentiel!J2) ) + (find("bleu",Referentiel!J2)) + (find("essence",Referentiel!J2))
* ( find("voiture",Referentiel!J2) ) * (find("bleu",Referentiel!J2)) * (find("essence",Referentiel!J2))

où Referentiel!J2 est la première cellule de la colonne filtrée.

Mais ces 2 requète me ramènent la même chose, çàd "tous les mots". Le "+" ou "*" ne change rien.

Si quelqu'un à une réponse, j'ai bientôt plus de cheveux! :)

3 réponses

fngoagouni Messages postés 22 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 3 mai 2010
9 juil. 2009 à 23:38
Bon, résolu mon pb,tout seul, comme un grand !
Pas trés motivé pour venir déposer la soluce vu la participation mais bon.
Pour ceux qui sont dans la même M... que je l'ai été :

Il suffit en fait de rajouter la fonction isNumber() autour du fin()
Par exemple :
isNumber(find("texte n°1",Referentiel!J2)) + isNumber(find("texte n°2",Referentiel!J2)) + Isnumber(...) etc...

Ah! Et aussi (çà peut servir) :
IsError(find(...)) permet d'opérer un "qui ne contient pas..."
3
fngoagouni Messages postés 22 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 3 mai 2010
6 juil. 2009 à 22:46
Personne n'a d'idée à me proposer?
S.V.P.
0
fngoagouni Messages postés 22 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 3 mai 2010
6 juil. 2009 à 23:40
Bon c vrai que mon premier message est un peu bordelique et je m'en excuse.
Je recommence :
Dans un document excel, j'ai

1) Un premier Onglet (que j'appelle Saisie) avec un premier catalogue de libellés pour lesquels je dois trouver des libellés équivalents dans un autre catalogue de référence (Onglet Référentiel).

2) Un autre onglet (Référentiel) avec le fameux "catalogue de référence"
(en gros = 1 code, 1 libellé d'origine, 1 libellé épuré des accents, majuscules et autres caractèra non grata )

Le catalogue de référence pouvant être de taille extrêmement variable (1 à n lignes), je voudrai proposer un formulaire de recherche de texte avec un champ de saisie dans lequel on saisi les mots recherchés, et 2 options de recherche :

Option n°1 : recherche des libellés contenant au moins un des mots saisis.
Option n°2 : des libellés contenant tous les mots saisis (peu importe l'ordre)

Mes libellés sont en colonne Referentiel!J2
Je génère un filtre en colonne M,
Referentiel!M1 = vierge
Referentiel!M2 = contient selon l'option n1 ou n°2 l'une des 2 formules :
Option n°1 :
"( find("conduc",Referentiel!J2) ) + (find("aerien",Referentiel!J2))"

Option n°2 :
"( find("conduc",Referentiel!J2) ) * (find("aerien",Referentiel!J2))"

(en supposant que l'on ai saisi "conduc aerien" dans le champ de recherche)

Mon problème est que ces 2 requètes me ramènent le même résultat, et je ne comrend pas pourquoi.
0
Rejoignez-nous