Re : Problème avec liste sans doublons et sans blancs...
Bonsoir
La résolution du problème par Tibo, est bonne. Mais on peut la simplifier, les caractères génériques peuvent être neutralisés par l'ajout d'un caractère ~ devant le symbole. Dans ce cas, le * caractère est pris comme un caractère normal.
Dans la formule, il suffit simplement de remplacer dans la valeur à rechercher le caractère *, par ~*, par la fonction SUBSTITUE. Il n'est nullement besoin de le faire pour la plage de recherche. Ce qui donne
Re : Problème avec liste sans doublons et sans blancs...
Bonjour
Christian, dans ta formule d'origine, tu as une condition qui ne sert à rien, le résultat étant invariablement à VRAI. Je veux parler de cette condition :
Code:
NON(ESTNA(EQUIV(champ;champ;0)))
Tu testes par la fonction EQUIV que la valeur des données "champ" se trouve bien dans "champ" qui est un obligation en soit.
Autre points :
° Dans une matricielle, on peut très bien définir une plage de donnée entière, mais cela dépend de son emplacement. Dans ta formule, La plage d'INDEX peut-être définie en tant que colonne entière, INDEX ne recevant de PETITE.VALEUR qu'une seule donnée. Cette notion de plage entière simplifiera la suite de La formule.
° Ta condition ET (*) dans le critère de la fonction SI, est à éviter. Il vaut mieux passé par une véritable SI(...;SI(...;...;...);...). Excel ne calculant pas toute la formule, mais uniquement ce qui est nécessaire, tu gagnes sur les temps de calcul en conditionnant la fonction d'EQUIV.
° Cette double condition ne sert à rien(champ>0)*(champ<>""), il suffit de mettre : champ<>"". Champ ne contenant que des données de types texte.
° Si la donnée "Champ" doit être affichée, tu recherches de nouveau par la fonction EQUIV la position de la valeur dans "Champ", il est préférable de reprendre la position de l'index matricielle dans la matrice LIGNE.
Par l'utilisation de la plage entière dans INDEX, on supprime la notion de décaler que tu as dans la formule.