Comment créer une recherche multicritère ?

Résolu
ymike Messages postés 7 Statut Membre -  
 ymike -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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. ymike Messages postés 7 Statut Membre
       
      ha désolé !

      C'est la première fois que j'utilise le forum
      Effectivement je suis sur Excel.
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > ymike Messages postés 7 Statut Membre
         
        pas de soucis.
        J'ai déplacé ta question.
        Bonne journée.
        0
      2. ymike Messages postés 7 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        merci beaucoup.
        0
  2. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
     
    bonjour
    Dans excel tu peux faire un tri sur decroissant dans la colonne prix
    0
    1. ymike Messages postés 7 Statut Membre
       
      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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859 > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
       
      effectivement,

      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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. ymike Messages postés 7 Statut Membre
       
      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
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > ymike Messages postés 7 Statut Membre
         
        Ok, 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. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    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. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      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
      1. ymike > castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention  
         
        CASTOURS ET PHILOU VOUS AVEZ RESOLU MON PROBLEME !!! j'ai adapté les formules à mon tableau et ça fonctionne !!

        un grand merci.
        0
    2. ymike Messages postés 7 Statut Membre
       
      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
      1. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217 > ymike Messages postés 7 Statut Membre
         
        bonjour
        est ce ma solution?
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    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