Recherchv sur références similaire

Maoandnano Messages postés 40 Statut Membre -  
Vaucluse Messages postés 27336 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.

2 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    • 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
    0
    1. Maoandnano Messages postés 40 Statut Membre
       
      Oui c'est exactement ça, je vais essayer votre solution, merci
      0
      1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453 > Maoandnano Messages postés 40 Statut Membre
         
        j'en ai rajouté une plus simple en fin de message si vous ne ressortez que la date
        0
    2. Maoandnano Messages postés 40 Statut Membre
       
      J'ai mis un document pour vous faire comprendre peu être un peu mieux mon problème
      https://www.cjoint.com/c/HExhN6XUDsB

      Encore merci
      0
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    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
    0
    1. Maoandnano Messages postés 40 Statut Membre
       
      Bonjour, il semblerait que votre réponse n'est pas était publié en entier.
      Cordialement
      Maoandnano
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Elle était partie un peu vite, maintenant elle est complète
      0