IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Recherche via Index Equiv en formule matricielle


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    rao
    rao est déconnecté
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut Recherche via Index Equiv en formule matricielle
    Bonjour,

    Je me bataille avec les fonctions Index et Equiv en formule matricielle pour résoudre mon problème mais rien n'y fait. Je pense que je suis pas loin mais je bloque.

    Mon problème: J'ai un fichier de cette apparence (cf. ci-dessous).

    Sur une autre feuille j'indique le type de produit, la longueur et le volume à chercher et je souhaite afficher le prix. J'ai unicité pas de doublons.

    Tant que je suis sur le produit et longueur, ça marche je fais un
    =INDEX(colonne prix;EQUIV(1;(colonne produit=cellule produit)*(colonne longueur=cellule longueur);0)

    mais je bloque sur la fin: impossible de renvoyer un prix de 52 pour produit A longueur 30 volume 7
    même en ajoutant un truc du style *(Feuil6!E1:E15<=Feuil1!G22)*(Feuil6!F1:F15>=Feuil1!G22) à mon Equiv....

    Une idée? Peut-être que je fais fausse route avec ma solution pourtant ça marche pas trop mal tant que je suis sur une borne.
    Je dois rester avec une formule (pas de BDLIRE, pas de VBA, même si je sais que ça pourrait résoudre le problème).

    Merci d'avance,


    Produit longueur vol. de vol. à prix
    A 30 1 1 28
    A 30 2 2 33
    A 30 3 50 52
    A 50 1 1 28
    A 50 2 2 33
    A 50 3 50 52
    A 70 1 1 29
    A 70 2 2 56
    A 70 3 3 87
    A 70 4 50 97
    A 90 1 1 33
    A 90 2 2 45
    A 90 3 3 52
    A 90 4 4 88
    A 90 5 50 102
    B 30 1 1 54
    B 30 2 2 65
    B 30 3 50 76

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonsoir,
    Pas certains d'avoir bien compris mais voyez la suggestion dans le fichier

  3. #3
    rao
    rao est déconnecté
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    Bonjour,

    Merci pour la réponse. A la relecture c'est vrai que je ne suis pas clair, je m'en excuse.

    En fait, les colonnes 3 et 4 sont des bornes.
    Dans mon exemple,
    lorsque j'ai 1 produit A longueur 30 je dois renvoyer le prix 28 (volume ou quantité compris entre 1 et 1)
    lorsque j'ai 2 produits A longueur 30 je dois renvoyer le prix 33 (volume compris entre 2 et 2)
    lorsque j'ai 3 produits A ou plus longueur 30 je dois renvoyer le prix 52 (volume compris entre 3 et 50)
    C'est ce probleme de bornes que je n'arrive pas à gérer. Dès que j'ai une quantité 4 ou 5, mes fonctions me lâchent lamentablement.

    J'ai 7 produits avec plusieurs longueurs chacun les premières lignes ne sont pas explicites mais j'ai plusieurs centaines de lignes à traiter et par la suite, j'ai des intervalles qui s'allongent (de 1 a 3 puis de 3 à 7 puis de 7 à 12 puis de 12 à 50 par exemple).

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 468
    Par défaut
    Bonsoir,

    Sur la base du fichier fourni par rjamin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX($E$2:$E$19;EQUIV(1;($A$2:$A$19=J2)*($B$2:$B$19=K2)*($D$2:$D$19>=L2);0))
    Il suffit de tester par rapport à la borne supérieure de l'intervalle.
    En effet, même si le dernier critère (>=L2) peut avoir plusieurs réponses la fonction EQUIV renvoie la première.

    Par exemple pour 2 produits, les prix 33 et 52 vérifient la condition et la première est renvoyée (ici 33).

    A+

  5. #5
    rao
    rao est déconnecté
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    En fait, je ne comprend pas, j'ai déjà essayé cette formule hier et rien ne fonctionnait. J'ai réessayé aujourd'hui, toujours un résultat faux.
    Je fais un nouveau fichier ou je colle ma table et refais la formule de zéro et .... ça fonctionne
    Je ne sais pas d'où vient le bug, ça m'inquiète et surtout je rage d'avoir perdu 3 heures alors que j'avais la formule.

    Merci à vous deux Robert et Gerard pour m'avoir redonné l'envie de perseverer. Gerard du coup, j'ai remis la condition sur inferieur ou égale et supérieure ou égal, ça m'évite de me retrouver avec une valeur fausse si le fichier est mal trié (ce que je ne contrôle pas pour le coup).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Recherche simplifiée INDEX EQUIV
    Par Blacktizen dans le forum Excel
    Réponses: 8
    Dernier message: 09/04/2015, 14h56
  2. [XL-2010] recherche avec index/equiv
    Par Bloubee dans le forum Excel
    Réponses: 1
    Dernier message: 28/01/2013, 08h10
  3. Réponses: 10
    Dernier message: 28/01/2010, 11h26
  4. Réponses: 15
    Dernier message: 04/01/2010, 10h14
  5. [E-07] Difficulté avec la formule index/equiv
    Par Bloubee dans le forum Excel
    Réponses: 5
    Dernier message: 03/11/2008, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo