Comment créer une recherche multicritère ?

Résolu
Bonjour,

voici un exemple de grille tarifaire transport
http://www.cjoint.com/c/FAmkglwShQY

Je cherche à créer une formule qui me donne le nom du transporteur le moins cher pour un transport donné.
Exemple :
- département de départ = 50
- type de véhicule = B
- département de destination = 70
- métrage = 3

Le résultat doit être le transporteur Jean pour un montant de 260

Mon véritable tableau contient environ 6000 lignes avec environ 30 transporteurs et cela me faciliterait la vie si vous pouviez m'aider.

Par avance merci.

5 réponses

  1. Modérateur
    Bonjour,
    Je n'ai pas la possibilité d'accéder au fichier ...
    Pourrais tu nous indiquer sur quoi tu travailles ? ( quel logiciel de BDD ? )
    Access ? Mysql ? SqlServer ? Oracle ? autre ?

    Tu parles de "formule" ... hors... avec les bases de données... on parle de requêtes !
    Ne serais tu pas sur Excel ???? ... si oui ... je déplacerait ta question dans la bonne section du forum.

    Merci.

    0
    1. ha désolé !

      C'est la première fois que j'utilise le forum
      Effectivement je suis sur Excel.
      0
    2. Modérateur
      @ymikepas de soucis.
      J'ai déplacé ta question.
      Bonne journée.
      0
    3. @jordane45merci beaucoup.
      0
  2. bonjour
    Dans excel tu peux faire un tri sur decroissant dans la colonne prix
    0
    1. Bonjour,

      Ce que je souhaite c'est d'avoir un affichage automatique dans 2 cellules :
      dans la première le tarif le moins cher et dans la seconde le transporteur correspondant à ce tarif.

      Exemple :
      Je rentre ce que je sais
      A1 = département de Départ
      B1 = Type de véhicule
      C1 = département de destination
      D1 = métrage
      Je cherche à faire afficher
      E1 = formule pour le tarif le moins cher ?
      F1 = formule pour le transporteur correspondant au tarif le moins cher ?

      Il s'agit en fait de recherche multicritères justement pour éviter d'avoir à chaque fois à faire tous les filtres et les tris.
      0
    2. Contributeur
      Bonjour

      sous toute réserve de réactivité du fichier dont Michel fait très justement état avec des formules matricielles:

      pour la valeur min d'après votre tableau:

      =MIN(SI(A:A&C:C&D:D=50&"B"&70;DECALER(A1;;EQUIV(3;2:2;0)-1;1000)))

      pour la valeur min d'après votre tableau:
      formule matricielle à entrer avec la touche enter en maintenant les touches ctrl et shift enfoncées. Elle doit se retrouver entre accolades dans la barre de formule.

      et ensuite pour trouver le nom du transporteur, une formule normale avec l'adresse de la cellule contenant la formule précédente:

      =INDEX(B:B;EQUIV(cell;DECALER(A1;;EQUIV(3;2:2;0)-1;1000);0))

      formule qui, comme le signale aussi l'ami Michel qui a encore raison, ne vous renverra que le premier trouvé dans le tableau en ca d'ex-aequo.

      bien sur les valeurs 50,B,70 et cell sont à remplacer par les rèf des cellules contenant ces valeurs

      a essayer, mais probablement bien trop lourd si vous avez un tableau de 6000 lignes à remplir
      0
    3. Bonjour à tous,

      je viens de tester sur plus de 8000 lignes avec une matricielle beaucoup plus compliquée que celle de Vaucluse et la réponse est instantanée.
      La tienne, Vaucluse présente un léger temps de réaction qui disparaît quand on supprime les colonnes entières.
      ça donne
      =MIN(SI(A3:A8327&C3:C8327&D3:D8327=50&"B"&70;DECALER(A3;;EQUIV(3;A2:AE2;0)-1;8325)))

      cordialement
      0
    4. Contributeur
      Salut JvDo

      et merci pour le test, mais il me reste quand même un doute. La formule fonctionne bien sur une ligne. Je crains toutefois que le demandeur veuille ressortir les résultats ligne par ligne sur un tableau de 6000 lignes, c'est à dire 6000 fois la formule!
      (on pourrait par contre alors limiter les champs à la ligne 800 si le tableau base de données est complet dans le modèle transmis)

      Je pense que c'est ce que Michel à compris et il a sans doute raison!

      Bien cordialement
      0
    5. @Vaucluseeffectivement,

      ouille ouille, ça pique les yeux quand on recopie la formule sur 8 300 cellules : 1'05" de recalcul sur mon PC de compet d'il y a 5 ans.

      le temps réel n'a qu'à bien se tenir !!

      cordialement
      0
  3. Contributeur
    Bonjour

    On pourrait trouver avec une formule matricielle mais avec 6000 lignes j'ai peur que le temps de réponse soit très lent;il faudrait donc passer par du VBA
    sinon, que se passe t'il si tu as >=2 transporteurs qui ont le m^me tarif ?
    0
    1. Le VBA dépasse mes capacités ... pour l'instant.
      Effectivement c'est une bonne question si plusieurs transporteurs ont le même tarif le choix se fait alors par consultation.
      De ce que je comprends, j'ai peur de devoir investir dans un logiciel type TMS (Transport Management System) ... ou de me former à la VBA ...
      0
    2. Contributeur
      @ymikeOk, on va passer quand m^me par du VBA vu le nombre de lignes et les potentiels exæquos
      on envoie sur toute la France métropolitaine (Corse comprise) ?
      On part que des département 50 et 60?
      liste des types de camions: B, P...?

      sois patient.
      0
  4. Bonjour

    Une idée de fichier mais il y a surement plus simple

    http://www.cjoint.com/c/FAnlxzVtIRx

    La base feuil2 doit être triée colonne A du plus petit au plus grand et colonne C idem

    C'est en forgeant que l'on devient forgeron. -  C'est au pied du mur que l'on voit le maçon - on apprend toujours de ses erreurs
    0
    1. Bonjour
      Le lien a été crée : https://www.cjoint.com/c/FAnpF7MRsXF
      Dans ce lien ton fichier excel trié sur les 2 colonnes mentionnés en utilisant l'outil de tri d'excel
      0
    2. Bonjour Philou,

      ça fonctionne !

      C'est vrai qu'il est intéressant pour moi d'avoir la liste des transporteurs avec une mise en forme conditionnelle mettant en valeur le prix le plus bas, car parfois, je ne sélectionne pas le moins cher (problème qualité ...).

      Je vais essayer d'adapter tout ça à mon tableau de 6000 lignes ... affaire à suivre.

      Merci.
      0
    3. @ymikebonjour
      est ce ma solution?
      0
    4. @castoursCASTOURS ET PHILOU VOUS AVEZ RESOLU MON PROBLEME !!! j'ai adapté les formules à mon tableau et ça fonctionne !!

      un grand merci.
      0
  5. Bonjour

    Le fichier avec une modification sur le type de véhicule à fin d'éviter la sélection d'un code absent.

    http://www.cjoint.com/c/FAnrYiZt7wx
    0