[EXCEL 2007] - Recherche colonne non triée

Fermé
Jodko - Modifié par Jodko le 20/09/2011 à 17:32
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 21 sept. 2011 à 12:44
Bonjour,

J'aimerais une aide sur la recherche en cas de colonne non triée.

Je m'explique : RechercheV ne fonctionne que pour une recherche sur une première colonne qui est triée par ordre croissant.

J'ai parcouru un bout de la toile sur le sujet et la réponse qui est donnée est d'utiliser une combinaison INDEX - EQUIV pour s'en sortir, typiquement dans mon cas.

Mon soucis, c'est que ça ne marche pas mieux : si je ne trie pas ma colonne, j'ai la même réponse que pour le RechercheV, c'est à dire la valeur de la dernière ligne dans la colonne que je demande.

Est ce que quelqu'un peu m'aider ?

Merci.


Jodko.



A voir également:

11 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 20/09/2011 à 17:50
bonjour
par exemple
rechercheV sur une colonne B non triée (B1:B16), valeur cherchée en A1

=Si(NB.SI(B1:B16;A1)=0;"";RECHERCHEV(A1;B1:D16;2;0)

Le zéro en dernier paramètre recherche la 1° valeur exacte
Michel
4
Je ne cherche pas une valeur exact. juste en fait le premier pas de temps ou je passe sous un seuil.

Jodko.
0
Merci de joindre ton fichier via cjoint.com
0
Re bonjour,

Le fichier expurgé de toute données sensible.

http://www.cijoint.fr/cjlink.php?file=cj201109/cijkkF6vcM.xlsx


Le groupe de cellules de gauche, c'est la version non triée (avec INDEX ou RECHERCHEV) de manière croissante, le groupe à droite c'est la version triée par ordre croissant.

Le bon résultat est 2, pas 3.


Jodko.
0
Sans fichier c'est un peu trop compliqué pour mwa pour t'aider..

Désolé
0
Je t'ai mis le lien dans mon post...


Jodko.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
Modifié par Vaucluse le 20/09/2011 à 18:54
Bonjour
la proposition de michel, remontée en tête de fil correspond à ce que vous cherchez et s"applique aussi au code EQUIV
Soit un ;0 en fin de formule RECHERCHE ou EQUIV à la place du 1 pour éviter le classement

Mais à priori vous n'aviez pas tout dit puisque vous ne cherchez qu'une partie de la valeur affichée ??

La formule qu'il vous faut en conséquence, en C2 sur votre fichier, dans le champ non classé est:
{=INDEX(B4:B6;(EQUIV("1,43";GAUCHE(C4:C6;4);0);1)}

cette formule est matricielle est doit donc être entrée avec la touche Enter en maintenant ctrl et shift enfoncées.Elle se retrouve entre accolade lorsque cette entrée est effectuée

Crdlmnt

Ps
si vous voulez faire référence à une cellule pour entrer la valeur cherchée, remplacer dans la formule "1,43" par l'adresse de cette cellule et entrer la valeur cherchée en la précédant de l'apostrophe'
ou alors écrivez la formule comme suit pour que la valeur reste numérique:
{=INDEX(B4:B6;(EQUIV(cellule;GAUCHE(C4:C6;4)*1;0);1)}

pour terminer, si vous cherchez à partir de la cellule (D2 par ex) un nombre variable de chiffre en tête de nombre:
{=INDEX(B4:B6;(EQUIV(D2;GAUCHE(C4:C6;NBCAR(D2))*1;0);1)}



Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 20/09/2011 à 19:26
Bonsoir tout le monde,

vaucluse, j'ai l'impression que tu ramènes 1 et non pas 2 (?)

ma proposition :
=EQUIV(MIN(SI((D3-liste)>0;(D3-liste);9^9));D3-liste;0)
matricielle à valider avec shift+ctrl+entrée
'liste' étant la plage C4:C100 nommée (cellules vides acceptées), et D3 la valeur seuil.

eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
20 sept. 2011 à 19:38
Bonsoir Eric
ce n'est pas qu'une impression, mais c'est bien 1 dans le fichier qui est en ligne avec 1,4387824. Savoir ce que l'on cherche exactement?
crdlmnt
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 20/09/2011 à 19:46
Le bon résultat est 2, pas 3
Pour moi c'est la plus grande valeur inférieure au seuil qui est recherchée, l'équivalent d'equiv(...;1).
On verra bien :-)
D'ailleurs si c'est inférieure ou égale il faudra remplacer mon test '>' par '>='
eric
0
Bonjour,

Je cherche effectivement à ramener 2, soit le premier résultat en dessous de 1,43 qui est un seuil. Pour moins d'ambiguïté, j'aurais peut être du dire que je cherchais 1,425...

J'ai essayé la formule d'eriiic, et il me répond #VALEUR si je la mets dans INDEX, ou erreur sans...

Bref.


Au secours :O


Jodko.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
20 sept. 2011 à 21:04
#VALEUR c'est parce que tu as du texte dans ta plage.
ex: http://www.cijoint.fr/cjlink.php?file=cj201109/cij4FXKUSN.xls

eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
Modifié par Vaucluse le 20/09/2011 à 21:01
Re
je ne suis pas sur du résultat, mais essayez celle ci qui n'est pas matricielle, avec la valeur limite en D2:
=INDEX(B4:B6;EQUIV(GRANDE.VALEUR(C4:C6;SOMMEPROD((C4:C6>=D2)*1)+1);C4:C6;0);1)
marche aussi avec des cellules vides, par exemple sur C4:C100
crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
Ca à l'air de marcher, mais je pense que je ne comprends pas pourquoi...

Je m'explique : Admettons dans mon exemple que D2 soit exactement la valeur 1,41180905620014 (qui est sur la ligne de 2).

Si j'écris : =INDEX(B4:B6;EQUIV(GRANDE.VALEUR(C4:C6;SOMMEPROD((C4:C6>=1,41180905620014)*1)+1);C4:C6;0);1) , la réponse est 2

Si j'écris :

=INDEX(B4:B6;EQUIV(1,41180905620014;C4:C6;0);1) la réponse est #N/A
=INDEX(B4:B6;EQUIV(1,41180905620014;C4:C6;1);1) la réponse est 3
=INDEX(B4:B6;EQUIV(1,41180905620014;C4:C6;0);-1) la réponse est 1

Du coup, ca marche pas ...


Jodko.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
20 sept. 2011 à 21:27
re,

tu peux lire ça aussi
eric
0
Non, je n'ai pas de texte nulle part...


Jodko.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
21 sept. 2011 à 00:33
Purée t'es un lent toi...
Aucun commentaire sur le fichier exemple ?
Tu vois bien que la formule ne retourne pas d'erreur, contrairement à ce que tu disais...
Alors teste et dis si c'est bon ou pas
eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
Modifié par Vaucluse le 21/09/2011 à 06:58
Bonjour

Eric, ton exemple est OK, mais je ne vois pas de commentaires!

Jodko
je n'ai pas écrit le code EQUIV avec 1 ou -1 mais avec 0
explication
le code GRANDE.VALEUR (Champ;rang) recherche la valeur exacte au rang indiqué après le point virgule
le code SOMMEPROD(champ>valeur) compte le nombre de valeurs supérieures ou égales à celle cherchée (on peut aussi utiliser NB.SI)
en y rajoutant 1, on définit le rang de la valeur inférieure la plus proche
Le code GRANDE.VALEUR(Champ;xx) donne donc cette valeur exacte
en conséquence, il faut utiliser dans le code EQUIV ;0) ou;FAUX)

bonne chance


Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
21 sept. 2011 à 10:41
Salut vaucluse,

Il y a méprise, mon message était pour jodko :-)
Je lui met un fichier exemple, il ne le voit pas.
Je lui remet un message pour qu'il aille lire le post. Il lit la 1ère phrase et ne regarde même pas le fichier exemple où il peut voir que la formule (bien saisie) ne retourne pas d'erreur.
Bref, ça m'énerve...

A+ :-)
eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
21 sept. 2011 à 12:00
Cool Eric!!!... bien que là, on ne puisse pas te donner tort, on a le sentiment que le demandeur zappe pas mal d'information depuis le message de Michel concernant le code à placer dans les formules EQUIV ou RECHERCHE.
Bien cordialement
0
A tous, je lis ce que vous me dites, et pas que les premières lignes, alors je vais m'amuser à citer pour qu'il y ait plein de choses à lire :

"#VALEUR c'est parce que tu as du texte dans ta plage. "

Je n'ai PAS de texte dans la plage dans mon tableur sur mon PC, j'en suis sur et certain.

J'ai ouvert ton tabbleau qui ne renvoie pas d'erreur, mais qui ne m'explique pourquoi j'ai une erreur moi, parce qu'Excel ne me parle pas, tout simplement.

Je suis idiot, mais on est comme on est. Je comprends pas tout ce que vous me dites.

Ma question est pourtant simple :

Comment faire rechercheV sur une colonne non triée. Exactement rechercheV, simplement.

Merci.


Jodko.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
Modifié par Vaucluse le 21/09/2011 à 12:44
Ne nous fâchons pas

Vous n'êtes certainement pas idiot , ce n'est pas ce que nous avons dit...
...mais idiot ou pas, il n'est pas possible de faire un RECHERCHEV quand la colonne de recherche est, comme sur votre modèle, à droite de la colonne à éditer.et que de surcroît, votre cas n'est pas adaptable en l'état avec une colonne non triée, sauf à appliquer les conseils que l'on vous donne depuis le début

Ce que nous disons simplement, c'est que vous n'utilisez pas pleinement les informations que l'on vous transmet.

relisez tout, appliquez le correctement et parlez nous après seulement des résultats qui ne fonctionnent pas.

sans rancune et bien cordialement.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
21 sept. 2011 à 12:44
"#VALEUR c'est parce que tu as du texte dans ta plage. "
Je n'ai PAS de texte dans la plage dans mon tableur sur mon PC, j'en suis sur et certain.

Si, #VALEUR c'est quand la fonction veut un type de donnée et qu'on lui fourni un autre type.

Comment faire rechercheV sur une colonne non triée. Exactement rechercheV, simplement.
Michel t'a répondu ici à cette question en te donnant les limites : Le zéro en dernier paramètre recherche la 1° valeur exacte.
Ce n'est pas adapté à ce que tu veux.

Plutôt que de tourner un rond pendant des jours dépose un fichier exemple sur cijoint.fr et colle ici le lien fourni.

eric
0