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

fngoagouni 24 Messages postés vendredi 3 juillet 2009Date d'inscription 3 mai 2010 Dernière intervention - 3 juil. 2009 à 14:01 - Dernière réponse : fngoagouni 24 Messages postés vendredi 3 juillet 2009Date d'inscription 3 mai 2010 Dernière intervention
- 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! :)
Afficher la suite 

3 réponses

Répondre au sujet
fngoagouni 24 Messages postés vendredi 3 juillet 2009Date d'inscription 3 mai 2010 Dernière intervention - 9 juil. 2009 à 23:38
+3
Utile
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..."
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de fngoagouni
fngoagouni 24 Messages postés vendredi 3 juillet 2009Date d'inscription 3 mai 2010 Dernière intervention - 6 juil. 2009 à 22:46
0
Utile
Personne n'a d'idée à me proposer?
S.V.P.
Commenter la réponse de fngoagouni
fngoagouni 24 Messages postés vendredi 3 juillet 2009Date d'inscription 3 mai 2010 Dernière intervention - 6 juil. 2009 à 23:40
0
Utile
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.
Commenter la réponse de fngoagouni

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.