Comment créer une recherche multicritère ?
Résolu
ymike
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
ymike -
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.
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.
A voir également:
- Comment créer une recherche multicritère ?
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Comment créer un compte gmail - Guide
- Créer une adresse hotmail - Guide
- Créer un lien pour partager des photos - Guide
5 réponses
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.
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.
bonjour
Dans excel tu peux faire un tri sur decroissant dans la colonne prix
Dans excel tu peux faire un tri sur decroissant dans la colonne prix
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.
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.
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
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
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
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
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
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
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 ?
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 ?
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 ...
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 ...
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
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
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
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
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.
ç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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est la première fois que j'utilise le forum
Effectivement je suis sur Excel.
J'ai déplacé ta question.
Bonne journée.