Recopie sans doublons INDEX/EQUIV + 1 critère

Bonjour à tous,

Je reviens sur ce sujet… avec un nouvelle question. Cette technique fonctionne bien pour une recopie incrémentée sans doublons.

Cependant je rencontre un soucis pour ajouter un critère à la recherche.

En l'occurrence, pour illustrer ma demande, dans le fichier joint je souhaite faire une recopie incrémentée sans doublon des PDV contenant les caractères "ITM".

J'ai fait des tests infructueux avec la formule visible dans le fichier joint et avec un NB.SI.ENS aussi mais ça ne donne rien…

Avez vous une idée de comment adapter la formule pour ajouter ce critère de sélection?

Merci d'avance,

Je précise que l'ajout est de la recherche de cellule non vide est un exemple qui m'est venu car j'avais appris à faire une recopie avec ce critère;

Bien évidemment si je fais une recherche des cellules contenant les caractères "IT" je ne vais pas voir d'incrémentation de cellule vide

Mais avoir un deuxième critère pourrait être utile dans le cas où je souhaite afficher aussi les cellules contenant les caractères "AU" par exemple..

J'imagine que cela doit être possible mais pour l'instant, après plusieurs heures de test avec différentes imbrication de fonctions, je n'y parviens pas…

Help

Salut SHTOURS,

à tester

=SIERREUR(RECHERCHE(2;2/((NB.SI($E$1:E1;$A$2:$A$11)=0)*CHERCHE("ITM";$A$2:$A$11));$A$2:$A$11);"")

Bonne nuit

Bonsoir m3ellem1

Je te remercie, cela fonctionne bien.

En revanche, pourrais tu m'expliquer le mécanisme de ta formule, je ne connais d'ailleurs pas du tout la fonction recherche..

Est t'il possible avec cette formule d'ajouter un deuxième critère à la recherche? comme par exemple "AU"??

en te remerciant,

Bonjour SHTOURS,

En revanche, pourrais tu m'expliquer le mécanisme de ta formule, je ne connais d'ailleurs pas du tout la fonction recherche..

voici un exemple avec explication:

Est t'il possible avec cette formule d'ajouter un deuxième critère à la recherche? comme par exemple "AU"??

à tester:

=SIERREUR(SIERREUR(RECHERCHE(1;1/((NB.SI($F$1:F1;$A$2:$A$11)=0)*CHERCHE("ITM";$A$2:$A$11));$A$2:$A$11);RECHERCHE(1;1/((NB.SI($F$1:F1;$A$2:$A$11)=0)*CHERCHE("AU";$A$2:$A$11));$A$2:$A$11));"")

Bonne journée

Bonjour m3ellem1,

Je te remercie pour ton retour.

J'ai étudié ton lien , je comprends mieux l'utilisation combiné des NB.SI et CHERCHE.

Cependant la division de leur résultat je ne saisis pas, ni d'ailleurs le fait de rechercher le chiffre 2 avec la fonction RECHERCHE..

Aurais tu quelques éléments à me donner qui pourrait faciliter cette compréhension?

En te remerciant,

Une autre question que je me pose est ce qu'il s'agit de division euclidienne? Ce qui permet de rendre les résultats de CHERCHE, une fois divisés, sous forme de nombre entier.

Dans l'exemple sur la page tuto, je ne comprends l'ordre d'apparition des noms de tennismen.. le premier résultat donné est le dernier de la liste, pourtant Federer n'a pas encore été cité comme résultat …

Et ce que je ne comprends pas du tout c'est pourquoi indiquer 2 en valeur cherchée à la fonction RECHERCHE…

Salut SHTOURS,

je vais essayer de t'expliquer cette formule, je ne suis pas expert non plus

=RECHERCHE(2;2/((NB.SI($E$1:E1;$A$2:$A$11)=0)*CHERCHE("ITM";$A$2:$A$11));$A$2:$A$11)

afin que tu puisses voir des résultats partiels:

1- va dans la céllule E2

2- selectionne dans la formule: 2/((NB.SI($E$1:E1;$A$2:$A$11)=0)*CHERCHE("ITM";$A$2:$A$11))

3- appuie sur F9

4- et tu verras 4 fois 1 (VRAI) et le reste que des #VALEUR!.

{1;1;#VALEUR!;#VALEUR!;#VALEUR!;1;#VALEUR!;#VALEUR!;1;#VALEUR!}

la description de la fonction RECHERCHE indique: "Les valeurs de l’argument vecteur_recherche doivent être placées dans l’ordre croissant:...,-2,-1, 0, 1, 2,..., A-Z, faux,Vrai"

#VALEUR! n'est pas pris en compte par la fonction! uniquement les 1.

On recherche donc le chiffre 2, qui n'éxistera jamais (à la place du 2, tu peux prendre tout autre nombre supérieur à 1).

Et la logique de la fonction nous dit:

"Si la fonction RECHERCHE ne peut trouver l’argument valeur_cherchée, elle utilise la plus grande valeur de l’argument vecteur_recherche qui est inférieure ou égale à celle de l’argument valeur_cherchée."

La plus grande valeur qui suit est bien le dernier 1.

pour changer l'ordre (la valeur_cherchée doit être plus grande que le nombre qui suit, ne me demande surtout pas pourquoi )

=RECHERCHE(2;1/((NB.SI($E$1:E1;$A$2:$A$11)=0)*CHERCHE("ITM";$A$2:$A$11));$A$2:$A$11)

est-ce clair?

@++

merci pour ta réponse :

J'essaie de saisir, c'est encours, mais pas clair du tout pour l'instant,..

lorsque tu dis :

"#VALEUR! n'est pas pris en compte par la fonction! uniquement les 1.

On recherche donc le chiffre 2, qui n'existera jamais (à la place du 2, tu peux prendre tout autre nombre supérieur à 1).

Et la logique de la fonction nous dit:

"Si la fonction RECHERCHE ne peut trouver l’argument valeur_cherchée, elle utilise la plus grande valeur de l’argument vecteur_recherche qui est inférieure ou égale à celle de l’argument valeur_cherchée."

La plus grande valeur qui suit est bien le dernier 1."

En résumé la fonction RECHERCHE va chercher, en partant du haut du vecteur recherche, la valeur "2", elle est arrivée en bas et ne trouve que le dernier "1" qui correspond donc à la valeur la plus grande inférieure ou égale à 2.

Dans ce cas je ne comprends pas pourquoi la fonction affiche la cellule "ITM 4" qui correspond à l'avant dernier "1" et non le dernier. :/

j'avais déjà noté ca en haut

essaie les 2 pour comprendre ce qui se passe

=RECHERCHE(2;1/........)

=RECHERCHE(2;2/........)

@++

Re,

Je viens de faire plusieurs Tests. Je comprends mieu le comportement lorsqu'on recherche 2 tout en divisant par 1. Cf : Les deux fichiers joints et aussi ton exemple sur le site en anglais. il va cherche en bas du vecteur puis remonte celui-ci en énumérant toutes les valeurs répondant positivement au critères de recherche.

Cependant je ne comprends pas la logique d'Excel lorsqu'on recherche 2 et divise par 2. Cf : les deux fichiers joints où dans le TEST 2 on peut encore voir une certaine logique apparaître mais dans le 2 BIS clairement je ne vois pas…

NB : Je reviens dessus car j'aimais bien cette combinaison de fonction INDEX / EQUIV, est ce qu'il existe une possibilité à ton avis pour ajouter un critère de recherche à ce combo pour pouvoir effectuer l'incrémentation?

Merci beaucoup,

bonjour

une contribution

44shtours.xlsx (9.14 Ko)

cordialement

bonsoir Tulipe_4,

Merci pour ton aide,

Je me suis penché un petit moment pour essayer d'analyser un maximum la formule avant de venir te poser des questions sur son fonctionnement. Je pense en avoir saisi une bonne partie mais quelques questionnement demeurent.

Dans le premier SI, celui se termine par =LIGNE(base)-1;LIGNE(base)-1;"")"

Je n'arrive pas à bien saisir l'utilité. Est que cela sert à réinterpréter la position de la cellule donné par EQUIV dans la feuille de calcul? Dans ce cas ce que je ne comprends pas c'est normalement le EQUIV n'est censé donner une numéro de ligne à l'intérieur d'une matrice mentionnée..??

Ensuite la fonction PETITE.VALEUR servirait à donner des résultats conditionnés pour apparaître dans l'ordre aplha-numérique croissant?

Enfin, je souhaitais aussi savoir s'il était possible d'ajouter un second critère à la recherche? Par exemple "AU" pour pouvoir ajouter les magasins d'une autre enseigne.

Merci beaucoup,

Bonne nuit!

@Tulipe_4: je te souhaite bonne chance avec SHTOURS, il est entrain d'écrire sa thèse sur les formules Excel

@SHTOURS: je rigole c'est tout, c'est ton droit de demander les explications!

Salut m3elle1,

Pas de pb je sais que je pose beaucoup de questions.. Je n'arrive pas à utiliser quelque chose si je n'en comprends pas le fonctionnement, cela reviendrait à devenir uniquement demandeur sans tirer de leçon des conseils que je reçois.

Et à chaque fois que je suis parvenu à comprendre ce que l'on m'a conseillé sur ce forum cela m'a permet de bien progresser dans ma pratique

Cependant, au sujet d'INDEX/EQUIV, je n'ai pas trouvé de solution pour ajouter un second critère à ma recherche.

As tu pu observer le comportement de la fonction RECHERCHE avec 2 en val recherchée et division du NB.SI+CHERCHE par 2 dans les fichiers que j'ai joint?

Très franchement je n'ai toujours pas réussi à trouver de logique là-dedans...

bonjour

cours particulier

1) Ligne(.....) renvoie des n° de ligne ,ce qui n'a rien a voir avec ce que les lignes contiennent

Monsieur Excel aurait mieux fait de l'appeler N°.LIGNE ,mébon ..........

2) EQUIV renvoie une ou des positions , sous forme de n° donc si une valeur occupe la première ligne du tablo ce sera la position n°1 , si elle apparait encore (doublon) ce sera toujours 1

La fonction compare les diverses positions de chaque valeurs à des numeros de LIGNE

question ; pourquoi -1 ? parce que le tablo de val commence à la ligne n°2 (2) donc pour compenser le decalage entre position (EQUIV) et n°de LIGNE on ote 1 ainsi la ligne 2 =1

3) on vient ainsi de creer 2 matrices virtuelles (à l'intérieur de la formule ) aptes à etre comparées

SI (l'EQUIV (rappel :fixe) correspond au n° de Ligne compensé ; on le garde ,sinon .........

4) cela va donner une autre matrice vituelle de n° >>> 1;""";3;""";"";5;........... qu'il va bien falloir décortiquer

5)Pour décortiquer utiliser :PETITE .VALEUR qui fonctionne grace à un "coef" (1;2;3;4;.......)

on a vu au point 1) que LIGNE fournissait justement des n° , donc on reutilise ligne(a1) pour avoir le "coef" 1 de PETITE.VALEUR

on ne met pas de $ à A1 ainsi lors de l'incrementation A1 devient A2 ..............

6) cette extraction permet d'alimanter INDEX

Quant l'ajout du critère : c'est faisable

j'espère avoir bien expliqué

cordialement

Hello Tulipe_4,

Merci pour tes explications, je vais prendre le temps de bien potasser ça

Pourrais-je abuser en te demandant par quel biais on peut ajouter un second critère? Car de ce que j'ai compris un EQUIV ne peut faire référence qu'à une seule plage selon le numéro de ligne ou colonne qu'il va indiquer ..

Il faudrait faire deux INDEX?

Merci beaucoup

re

bon je suis parvenu à trier par ordre alpha avec 2 critères

tu as matière à potasser , à moins qu'une part de kiri te soit tartinée

cordialement

Merci

Le premier des 2 avec les critères ITM et AU est top, c'est vraiment l'extension du premier exemple que tu m'as envoyé.

En revanche le second est un peu plus compliqué à comprendre je trouve et en plus l'ordre d'apparition n'est pas alpha-numérique croissant mais un peu aléatoire, il y a peut être un soucis oO

Un truc que je ne comprends pas c'est l'utilité de cette formule NB.SI(base;"<"&base)+1

Que signifie le "inférieur"? On demande de compter le nombre de cellule de base qui sont inférieures au contenu de la cellule en cours? Mais du coup sur quel critère se base t-on pour considérer cette infériorité?..

Là je bloque…

Rechercher des sujets similaires à "recopie doublons index equiv critere"