Access : Top N sur 2 champs

jrdl91

XLDnaute Nouveau
Bonjour à tous,

Je me permets de revenir vous solliciter pour un "petit problème tout bête" que mes maigres connaissances access (et mes connaissances nulles en SQL) ne me permettent pas de résoudre...

Etant donné une table, Access permet de sortir facilement les N premières valeurs sur un champ (exemple classique des 10 meilleurs élèves ou 10 meilleurs vendeurs).

Mon problème est le suivant : imaginons que j'ai une table du type élève - note moyenne - avec un troisième champ (par exemple un mois dans l'année scolaire)...

Je voudrai "simplement" extraire de cette table la liste des N meilleurs élèves pour chaque mois, donc avoir un fichier résultat du type :

janvier 2011 V. Dupont 14,6
janvier 2011 B. Duval 14,3
janvier 2011 C. Durand 12,5
février 2011 B. Duval 15.0
février 2011 V. Dupont 14.5
février 2011 H. Dupuis 14.2

Ca parait (et c'est probablement...) tout bête, mais j'ai pas trouvé :confused:

Merci par avance de vos lumières !!!:)
 

jrdl91

XLDnaute Nouveau
Re : Access : Top N sur 2 champs

Bonjour tototiti2008,
Et merci de ta réponse :)
En passant par Excel, ça passe "tout seul" (trier par "date croissante puis moyenne décroissante", puis générer un champ "rang" avec une formule toute bête ( SI(G2=G1;L1+1;1), G étant la colonne où figure la date, L celle du rang),puis filtrer sur rang < N...

Par contre c'est tout sauf élégant, et donc même si ça marche, je cherche tjs une solution access "pur" :mad:

Merci par avance à quiconque aurait une idée !
 

tototiti2008

XLDnaute Barbatruc
Re : Access : Top N sur 2 champs

Re,

ça doit surement commencer par calculer le rang dans la classe

Calcul de rang - Le grenier Access

sur la base de l'exemple, j'ai calculé le rang par mois comme ça

Rang : CpteDom("*";"[Table1]";"[Note] > " & [note] & " And [Mois] = '" & [mois] & "'")+1

Attention le mois est considéré comme du texte ici, je ne sais pas s'il est considéré comme une date chez toi

si tu veux les 3 premiers de chaque mois, il suffit de mettre le critère "<=3" sur ce champ calculé