Liste sans doublons 2 conditions

Bonjour,

Je viens encore solliciter votre aide.

En effet même si j'ai essayé par moi même je n'arrive pas à adapter la formule exemple de Jacques BOISGONTIER pour extraire une liste sans doublons non pas pour 1 condition mais pour 2 conditions.

Mon essai se trouve sur la colonne O du fichier exemple ci joint et je ne comprend pas pourquoi la formule matricielle suivante reporter et glisser de O3 à O9 ne renvois pas le résultat attendu.

{=INDEX($L:$L;MIN(SI(OU($M$3:$M$14="CDI";$M$3:$M$14="CDD");SI(NB.SI(O$2:O2;$L$3:$L$14)=0;LIGNE($L$3:$L$14);LIGNES($L$3:$L$14)+LIGNE($L$3:$L$14)))))}

Merci

Cordialement

Hugues

Bonsoir,

Le OU ou le ET sont mal digérés par les formules matricielles...

Essaie ainsi :

=SIERREUR(INDEX($L:$L;PETITE.VALEUR(SI(SUBSTITUE($M$3:$M$14;"I";"D")="CDD";SI(NB.SI(O$2:O2;$L$3:$L$14)=0;LIGNE($L$3:$L$14);9^9));1));"")

J'en ai profité pour quelques autres substitutions en fonction de mes préférences naturelles :

PETITE.VALEUR que je préfère à MIN dans un tel cas (ce qui ne change pas le résultat en principe),

9^9 au lieu de LIGNES....+LIGNE..., c'est plus court et c'est plus grand (et plus sûr sur une longue liste : on renvoie un indice qui sort de la feuille et ne peut que provoquer une erreur, récupérée avec SIERREUR).

Cordialement.

Bonjour MFERRAND,

Tout d'abord un grand merci, cela fonctionne parfaitement.

Et je trouve géniale ta démarche du "SUBSTITUE" dans ce cas précis pour n'avoir à gérer en fait qu'une seule condition, très bonne idée.

"Le OU ou le ET sont mal digérés par les formules matricielles..."

J'essayerais de tenir compte de ce conseil à l'avenir.

"J'en ai profité pour quelques autres substitutions en fonction de mes préférences naturelles :

9^9 au lieu de LIGNES....+LIGNE..., c'est plus court et c'est plus grand (et plus sûr sur une longue liste : on renvoie un indice qui sort de la feuille et ne peut que provoquer une erreur, récupérée avec SIERREUR)."

Si tu as un peu de temps je voudrais bien que tu m'éclaires encore un peu plus sur l'instruction 9^9 car malgré ton commentaire ci dessus et que cela fonctionne parfaitement dans le cas de la résolution de mon problème je ne connaissais pas cette syntaxe et son fonctionnement.

Merci beaucoup

Cordialement

Hugues

Bonjour,

Dans ce type de formules, tu es confronté à 2 problèmes :

1) Afficher les éléments souhaités, c'est l'affaire des conditions

2) Ne rien afficher d'autre !

Pour le principe de la formule : c'est INDEX(colonneentière;numérodeligne).

On renvoie donc pour les éléments qui répondent aux conditions [critère de sélection dans la colonne voisine, et ne pas être déjà affiché] un index qui sort du champ de la liste :

Boisgontier le fait avec : LIGNES($A$:$A$14)+LIGNE(... soit les éléments hors conditions vont renvoyer un index à partir de 15, donc tombant au-delà de la liste, sur des cellules vides !

Là, Boisgontier "triche" un peu : une cellule vide renvoie 0 dans ce cas, et donc dès qu'il n'y a plus rien à afficher, cela devrait afficher 0. Si cela n'affiche rien, c'est parce qu'il a décoché l'affichage des 0 dans la feuille !

Tu peux vérifier : tape 0, rien ne s'affichera...

Tu pourrais obtenir la même chose par le format de cellule : passer en personnalisé et ajouter 2 point-virgule : Standard;;

Les zéros ne s'affichent plus avec ce format. Meilleure méthode car plus sélective.

Autre moyen : tu fais pointer les éléments hors condition vers une cellule unique. Par exemple à la place de LIGNES... tu mets : 10000

Puis tu te rends en A10000 et tu tapes une apostrophe dans cette cellule, ce qui force son renvoi en format texte et au lieu de renvoyer 0 elle renverra "".

Autre moyen encore, la fonction T : cette fonction force la valeur renvoyée en format texte, et lorsqu'elle renvoie la valeur d'une cellule vide, elle renvoie "" (évidemment, n'est utilisable que si les valeurs à renvoyer ne sont pas numériques...)

Et enfin, moyen très utilisé depuis l'apparition de la fonction SIERREUR, qui permet de récupérer une valeur d'erreur sans avoir à doubler la longueur de la formule : tu fais pointer les éléments hors conditions hors de la feuille. La feuille ayant 1048576 lignes il suffirait d'ajouter 1 à ce nombre pour que cela renvoie une erreur, mais pourquoi taper 7 caractères si l'on peut se contenter de 3 (9^9 : 9 puissance 9 = 387420489 fait très bien l'affaire...).

Cordialement.

Bonjour MFERRAND,

Merci pour toutes ces explications qui me permettent de mieux comprendre la formule que tu m'as proposée et pas simplement la coller parce que le résultat attendu est le bon. Et ainsi de progresser

Cordialement

Hugues

Rechercher des sujets similaires à "liste doublons conditions"