Problème avec liste sans doublons et sans blancs...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide, je bute en effet sur une liste de validation, sans doublons et sans blancs, qui ne me prends pas certains codes...

fichier joint...

Merci pour votre aide.

Bien amicalement,
Christian
 

Pièces jointes

Re : Problème avec liste sans doublons et sans blancs...

Bonjour Christian,

Cela est dû au fait que le caractère * est un caractère générique utilisé pour remplacer n'importe quelle chaine de caractères.

Une solution, qui consiste à remplacer le caractère * par un autre, le temps du traitement, puis de remettre le * à la fin :

Code:
=SUBSTITUE(INDEX(SUBSTITUE(champ;"*";"µ");PETITE.VALEUR(SI(NON(ESTNA(EQUIV(
SUBSTITUE(champ;"*";"µ");SUBSTITUE(champ;"*";"µ");0)));SI((EQUIV(SUBSTITUE(
champ;"*";"µ");SUBSTITUE(champ;"*";"µ");0)=LIGNE(INDIRECT("1:"&LIGNES(champ))))*
(champ>0)*(champ<>"");EQUIV(SUBSTITUE(champ;"*";"µ");SUBSTITUE(champ;"*";"µ");0)))
;LIGNE(INDIRECT("1:"&LIGNES(champ)))));"µ";"*")

On peut raccourcir en nommant la partie SUBSTITUE(champ;"*";"µ")

Je te laisse essayer et adapter

@+
 
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
Code:
=INDEX(champ;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(SUBSTITUE(champ;"*";"~*");champ;0)));SI((EQUIV(SUBSTITUE(champ;"*";"~*");champ;0)=LIGNE(INDIRECT("1:"&LIGNES(champ))))*(champ>0)*(champ<>"");EQUIV(SUBSTITUE(champ;"*";"~*");champ;0)));LIGNE(INDIRECT("1:"&LIGNES(champ)))))

Je n'ai pas analysé la formule du fichier, il me semble que l'on peut l'alléger.

@+Jean-Marie
 
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.
Code:
LIGNE(INDIRECT("1:"&LIGNES(champ)))
on le remplace par
Code:
LIGNE(champ)
.

Ce qui donne au final.
Code:
=INDEX(A:A;PETITE.VALEUR(SI(champ<>"";SI(EQUIV(SUBSTITUE(champ;"*";"~*");champ;0)=LIGNE(INDIRECT("1:"&LIGNES(champ)));LIGNE(champ)));LIGNE(INDIRECT("1:"&LIGNES(champ)))))

N'hésite pas à demander des précisions.

@+Jean-Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
398
Réponses
9
Affichages
326
Réponses
15
Affichages
992
Réponses
3
Affichages
542
Réponses
5
Affichages
261
Retour