Recherchv sur références similaire
Maoandnano
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
Vaucluse Messages postés 26496 Date d'inscription Statut Contributeur Dernière intervention -
Vaucluse Messages postés 26496 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je rencontre actuellement un problème, je travaille sur plusieurs fichiers qui vont chercher des références avec des recherchev ou des formules tels que celles-ci : INDEX(Feuil1!A:C;EQUIV(A1;Feuil1!C:C;0);1).
Mon problème vient du fait que des fois, dans les fichiers de recherche, il y a une référence associée à une case vide et une autre référence (la même) associée à une date .... sur le même fichier.
J'aimerai donc que ma recherchev ne prenne que la référence associé à la date et ne m'affiche pas la case vide.
je rencontre actuellement un problème, je travaille sur plusieurs fichiers qui vont chercher des références avec des recherchev ou des formules tels que celles-ci : INDEX(Feuil1!A:C;EQUIV(A1;Feuil1!C:C;0);1).
Mon problème vient du fait que des fois, dans les fichiers de recherche, il y a une référence associée à une case vide et une autre référence (la même) associée à une date .... sur le même fichier.
J'aimerai donc que ma recherchev ne prenne que la référence associé à la date et ne m'affiche pas la case vide.
A voir également:
- Recherchv sur références similaire
- Site similaire a coco - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Site similaire zone telechargement - Accueil - Outils
- Coqnu similaire ✓ - Forum Graphisme
- Il existe une ou plusieurs références circulaires - Forum Excel
2 réponses
Bonjour
si on comprend bien, vous pouvez avoir deux fois la même référence en colonne C, une avec une date en A et l'autre vide?
essayez alors (formule matricielle à limiter au nombre de lignes utiles pour ne pas alourdir le fichier):
=INDEX(Feuil1!$A$1:$C$100;SOMMEPROD(($C$1:$C$100=A1)*($A$1:$A$100>0)*(LIGNE($A$1:$A$100)));1)
formule à entrer avec la touche enter en maintenant les touches ctrl et shift enfoncées. elle doit s'afficher automatiquement entre accolades dans la barre de formule
ou plus simplement si vous ne voulez ressortir que la date de la colonne A, toujours en matricielle:
=MAX(SI(C1:C100=A1;B1:B100))
crdlmnt
si on comprend bien, vous pouvez avoir deux fois la même référence en colonne C, une avec une date en A et l'autre vide?
essayez alors (formule matricielle à limiter au nombre de lignes utiles pour ne pas alourdir le fichier):
=INDEX(Feuil1!$A$1:$C$100;SOMMEPROD(($C$1:$C$100=A1)*($A$1:$A$100>0)*(LIGNE($A$1:$A$100)));1)
formule à entrer avec la touche enter en maintenant les touches ctrl et shift enfoncées. elle doit s'afficher automatiquement entre accolades dans la barre de formule
- ne fonctionne que si une seule ligne contenant la référence contient une date
- les champs commencent obligatoirement en ligne 1
ou plus simplement si vous ne voulez ressortir que la date de la colonne A, toujours en matricielle:
=MAX(SI(C1:C100=A1;B1:B100))
crdlmnt
Bonjour
Plusieurs remarques:
_il faut bloquer les plages avec les signes $ pour pouvoir tirer la formule, par ex:$E$6:$F$10
exemple RECHERCHEV(I6;$E$6:$F$10;2;FAUX)) ou ;0)
sinon le code va chercher une valeur proche inférieure dans une liste classée
=MAX(SI(E6:E10=I6;F6:F10))
(Rappel matricielle à entrer avec la touche enter en maintenant les touches ctrl et shift enfoncées)
soit vous allez dans les options Excel et dans "options avancées", vous décochez la ligne "afficher un 0 dans les cellules de valeurs nulles"
soit vous écrivez:
=SI(MAX(SI(E6:E10=I6;F6:F10))=0;"";MAX(SI(E6:E10=I6;F6:F10)))
toujours en matricielle
=SI(NB.SI($I$6:I6;I6)>1;"doublon";SI(MAX(SI($E$6:$E$10=$I6;$F$6:$F$10))=0;"";MAX(SI($E$6:$E$10=$I6;$F$6:$F$10))))
dans tous les cas, surveillez bien les positions des $ et l'entrée en matricielle
voila ce que ça pourrait donner:
https://mon-partage.fr/f/M0FiMwrT/
revenez si besoin
crdlmnt
Plusieurs remarques:
- 1°) pour le principe: vous avez "tiré" la formule vers le bas sans bloquer les adresses des plages, ce qui fait qu'elles se décalent à chaque ligne par ex: E6:F10 devient E7:F11 etc...
_il faut bloquer les plages avec les signes $ pour pouvoir tirer la formule, par ex:$E$6:$F$10
- 2°)Accessoirement, la formule de recherche ne fonctionnera correctement (et encore, voir la suite au point suivant) que si vous compléter le code avec un 0 ou FAUX
exemple RECHERCHEV(I6;$E$6:$F$10;2;FAUX)) ou ;0)
sinon le code va chercher une valeur proche inférieure dans une liste classée
- 3°)Après ces précisions sur le code RECHERCHEV, i reste à dire qu'il ne peut pas résoudre votre problème, car cette formule retournera toujours la 1° valeur de F sur la ligne qui contient le code en E. Autrement dit: ressort une date si la 1° ligne du code affiche une date, ne ressort rien si la 1° ligne du code est vide en F
- 4°) d'où la nécessité d'utiliser une matricielle pour ressortir la valeur maximum de nF selon le code en E, soit en J6, et celle ci devrait convenir:
=MAX(SI(E6:E10=I6;F6:F10))
(Rappel matricielle à entrer avec la touche enter en maintenant les touches ctrl et shift enfoncées)
- 5°) cette formule va renvoyer 0 quand le code est vide. (il n'y en a pas dans votre exemple)Deux options pour éviter ce 0:
soit vous allez dans les options Excel et dans "options avancées", vous décochez la ligne "afficher un 0 dans les cellules de valeurs nulles"
soit vous écrivez:
=SI(MAX(SI(E6:E10=I6;F6:F10))=0;"";MAX(SI(E6:E10=I6;F6:F10)))
toujours en matricielle
- 6°) cette formule va vous renvoyer plusieurs fois le même résultat si vous avez plusieurs fois le même code en I c'est le cas en I6,I8,I10. Vous pouvez éviter ça en écrivant:
=SI(NB.SI($I$6:I6;I6)>1;"doublon";SI(MAX(SI($E$6:$E$10=$I6;$F$6:$F$10))=0;"";MAX(SI($E$6:$E$10=$I6;$F$6:$F$10))))
dans tous les cas, surveillez bien les positions des $ et l'entrée en matricielle
voila ce que ça pourrait donner:
https://mon-partage.fr/f/M0FiMwrT/
revenez si besoin
crdlmnt
https://www.cjoint.com/c/HExhN6XUDsB
Encore merci