Top 5 selon critère

Bonjour,

À partir d'une BDD, je cherche à construire un top 5 tout en utilisant un critère. Il faut aussi que les liens soient dynamiques car le fichier source varie tous les mois (mais ça c'est une autre affaire).

Dans l'exemple simplifié ci-joint, je souhaiterai lister les légumes ayant les 3 prix les plus élevés et qui se vendent sur Lyon (critère = lyon).

Le résultat doit être :

1. Céleri

2. Radis

3. Blettes

Note : le Top 3 ou Top 5, peu importe, est fixe. Aucune notion de "top x évolutif".

J'espère que le problème est clair. Merci d'avance pour votre aide.

(Excel 2010)

16top5.xlsx (9.28 Ko)

Bonjour

C-joint une proposition via un TCD

19copie-de-top5.xlsx (14.97 Ko)

Merci. Un TCD avec un fichier source dynamique c'est pas pratique si ?

Sinon, j'ai trouvé ceci :

20top5.xlsx (9.85 Ko)

Ça semble fonctionner

Bonjour,

Une formule à tester

et à tirer vers le bas

' le 1 étant le 1er rang

=SI($C$2:$C$19="Lyon";GRANDE.VALEUR($B$2:$B$19;1))
  

Amicalement

Pierrot

primokorn a écrit :

Un TCD avec un fichier source dynamique c'est pas pratique si ?

En nommant de manière dynamique la "table", on doit pouvoir y arriver.

Cela étant votre formule matricielle me semble pertinente.

Bonsoir,

Pour le fun.

Utilisation d'un tableau (dynamique), d'un TCD et des cases d'option.

Le TCD est actualisé automatiquement à la modification des données source.

Cdlt.

Chapeau Jean-Éric. Le VBA est bien pratique.

Merci à tous, j'ai tout ce qu'il me faut pour continuer mon travail sur le fichier d'origine.

Bonne journée.


Cappe Pierre a écrit :

Bonjour,

Une formule à tester

et à tirer vers le bas

' le 1 étant le 1er rang

=SI($C$2:$C$19="Lyon";GRANDE.VALEUR($B$2:$B$19;1))
  

Amicalement

Pierrot

Bonjour,

J'ai repris votre formule qui me semblait être la plus rapide à mettre en place. Elle fonctionne très bien quand on reste dans le même fichier mais, j'ai un 'FAUX' comme résultat quand j'utilise un fichier externe pour la source des données.

Exemple : =SI('[fichier_source.xlsx]Sheet1'!$I$2:$I$80000="Z060";GRANDE.VALEUR('[fichier_source.xlsx]Sheet1'!$O$2:$O$80000;1))

EDIT : le simple fait de changer le critère (de Lyon à Paris par exemple), me donne un 'FAUX' comme résultat

EDIT2 : ma formule matricielle me ressort la première ligne de ma BDD. Aucun respect du critère ni de la recherche de la valeur la plus élevée. Je ne comprends pas là...

EDIT3 : problème mis en suspens. Nouvelles tentatives prometteuses...

Re

Tout fonctionnait... jusqu'à ce que je pense à une nouvelle donnée à prendre en compte : la date !

Je dois aussi avoir un filtre sur la date : top 3 par exemple sur les prix datant d'après le 31/03/2015 dans cet exemple.

Encore un peu aide svp ?

Merci beaucoup.

7top5.xlsx (13.96 Ko)

Bonjour

Merci de tester la solution présente dans le fichier joint

=INDEX($B$2:$B$19;EQUIV(GRANDE.VALEUR(SI(($C$2:$C$19<>"")*($D$2:$D$19="Lyon")*($A$2:$A$19>=$K$1);$C$2:$C$19);J6);$C$2:$C$19;0);)

Formule matricielle !

19copie-de-top5.xlsx (15.01 Ko)

Je croyais avoir tester comme ça, sans doute le format de la date qui n'allait pas.

Enfin bref, ça marche très bien. Merci pour cette rapide réponse et efficace.

Bonne journée.

Une dernière petite chose SVP car ça tourne pas rond...

Ci-joint nouveau fichier avec onglets 'source' et 'synth'.

Je suis toujours sur l'idée du top 3 via la formule ci-dessus. Je cherche à afficher les désignations selon les 3 valeurs les plus importantes pour chaque division et après le 31/03/2015.

Tout fonctionne sauf la cellule B2 qui affiche une mauvaise désignation (CHARIOT ELEVATEUR au lieu de TALYRON 365 XL). Pourtant, la recherchev liée en D21 affiche la bonne valeur du TALYRON 365 XL...

Merci encore !

EDIT: Visiblement, la formule ne prend bien en compte la division. "CHARIOT ELEVATEUR" et "TALYRON 365 XL" ont la même valeur mais pas la même division. La formule indique pourtant la division Z060 et pas Z040 donc "CHARIOT ELEVATEUR" ne devrait pas être pris en compte...

9top5.xlsx (18.71 Ko)

Bonsoir,

Je pense que le souci vient du doublon pour la valeur et non de la division.

Je n'arrive pas à adapter la formule par l'astuce qui consiste à ajouter une valeur infime en fonction de la ligne.

Je suis obligé de passer la main à des spécialistes de la "chose" !

Bonjour,

Pas de soucis, merci d'avoir tenté le coup. J'attends aussi les experts alors

Bonjour,

Le fichier joint offre, du moins je le souhaite (......), une piste sérieuse à votre problème.

J'ai revu la logique de votre formule initiale.

Ma proposition est basée sur :

1/ Détermination du montant le plus élevé, sous conditions de date et division

2/ Recherche de la désignation correspondant à ce montant.

Mes formules se trouvent sur la feuille "source".

7copie-de-top5.xlsx (18.88 Ko)

Merci.

J'ai appliqué vos formules à mon fichier réel et il reste une anomalie (désolé ).

Tout fonctionne sauf sur la division Z040 qui ressort un doublon et ne respecte pas la date. En effet, la formule GRANDE.VALEUR affiche une désignation ayant une date de 2010.

C'est bizarre que 2 formules sur la liste ne respectent pas la date non ?

J'ai corrigé la formule de détermination de la "désignation".

Pouvez-vous la tester sur votre fichier ?

15copie-de-top5.xlsx (18.83 Ko)

Nouveau test : 100% de réussite

Bien joué et merci beaucoup !

Je vous dois de m'avoir obligé à travailler ce point particulier.... alors.... merci à vous aussi !

Rechercher des sujets similaires à "top critere"