Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment faire les rangs des élèves selon leur moyennes?

11 réponses
Avatar
Willi2004
Je suis Professeur de Mathématiques,j'utilise microsoft Access 2003 et je
voudrais savoir comment obtenir les rangs de mes élèves en fonction de leurs
moyennes.
Je sais le faire avec Excel car il existe une expression qui permet de le
faire:
=Rang(). Mais comment faire à l'aide d'Access?

10 réponses

1 2
Avatar
Tisane
Bonjour à toi aussi Willi2004 !!!!!!

Je suis Professeur de Mathématiques,
j'utilise microsoft Access 2003
et je voudrais savoir comment obtenir les rangs de mes élèves en
fonction de leurs moyennes.
Je sais le faire avec Excel car il existe une expression qui permet
de le faire:
=Rang(). Mais comment faire à l'aide d'Access?


Tu peux utiliser une formule du type :
Rang: CpteDom("*";"Ta_Table";"[Note] >= " & [Note])

Tu trouveras également des exemples à cette adresse :
http://access.developpez.com/sources/?page=Requete#RequeteClassement

et un complément ici :
http://support.microsoft.com/gp/regles
notamment le 4e point du chapitre "Vous êtes expéditeur".
--------
Tisane

Avatar
Eric
Bonjour,

Tu crées une requête te donnant la moyenne par élève, soit qryMoyenne.
Sur cette requête, tu en crées une autre en ajoutant un champ calculé
comme suit:
Rang: CpteDom("*";"qryMoyenne";"Moyenne>" & replace([Moyenne];",";"."))+1



Je suis Professeur de Mathématiques,j'utilise microsoft Access 2003 et je
voudrais savoir comment obtenir les rangs de mes élèves en fonction de leurs
moyennes.
Je sais le faire avec Excel car il existe une expression qui permet de le
faire:
=Rang(). Mais comment faire à l'aide d'Access?



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Tisane
Bonjour Eric,

Tu crées une requête te donnant la moyenne par élève, soit qryMoyenne.
Sur cette requête, tu en crées une autre en ajoutant un champ calculé
comme suit:
Rang: CpteDom("*";"qryMoyenne";"Moyenne>" &
replace([Moyenne];",";"."))+1


En effet, j'avais oublié le traitement des décimales au format US.
Il faut dire que j'étais plutôt dans les valeurs négatives et que les
décimales ne faisaient plus la différence ;-)

--
Tisane

Je suis Professeur de Mathématiques,j'utilise microsoft Access 2003
et je voudrais savoir comment obtenir les rangs de mes élèves en
fonction de leurs moyennes.
Je sais le faire avec Excel car il existe une expression qui permet
de le faire:
=Rang(). Mais comment faire à l'aide d'Access?




Avatar
Tisane
Tu crées une requête te donnant la moyenne par élève, soit qryMoyenne.
Sur cette requête, tu en crées une autre en ajoutant un champ calculé
comme suit:
Rang: CpteDom("*";"qryMoyenne";"Moyenne>" &
replace([Moyenne];",";"."))+1


Je ne sais pas comment les profs gèrent le traitement des ex aequo.
En l'occurrence, s'il y a 2 élèves au 7e rang, le suivant devrait être au 8e
rang (et non au 9e comme on l'obtient avec cette formule).
Avec la mienne, ce n'est pas mieux :
Rang: CpteDom("*";"qryMoyenne";"[Moyenne] >= " &
Remplacer([Moyenne];",";"."))
On passe du 6e rang au 8e, et le suivant est bien 9e.
Il y a bien un exemple avec un select distinct sur le site developpez.com
donné tout à l'heure, mais avec des entiers.
Bref, à Willi de se débrouiller pour ne pas avoir d'ex aequo ;-)

--
Tisane (toujours dernière de la classe :-//)


Je suis Professeur de Mathématiques,j'utilise microsoft Access 2003
et je voudrais savoir comment obtenir les rangs de mes élèves en
fonction de leurs moyennes.
Je sais le faire avec Excel car il existe une expression qui permet
de le faire:
=Rang(). Mais comment faire à l'aide d'Access?




Avatar
Eric
Bonjour Tisane,

En effet, j'avais oublié le traitement des décimales au format US.


;-)

En plus, je pense que le critère utilisant l'opérateur >= dans le
CpteDom() n'est pas bon, cela va décaler d'1 rang au moins quand il y
aura des ex-aequo. Par exemple:
Nom Moyenne
A 15
B 18
C 15

retournera
nom Rang
A 3 ' car 3 enregistrements >= à 15
B 1
C 3

C'est pourquoi je lui préfère l'opérateur > auquel je rajoute 1

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
re,

En général si n ex-aequo sur une note, le suivant aura le rang de
l'ex-aequo + n valeurs, non ?
Dans ton exemple, puisqu'il y a deux 7ème, le suivant en terme de
classement sera le 9ème bien qu'il ait la 8ème meilleure note ;-)

En définitive, on va s'approprier le problème de Willi.


Tu crées une requête te donnant la moyenne par élève, soit qryMoyenne.
Sur cette requête, tu en crées une autre en ajoutant un champ calculé
comme suit:
Rang: CpteDom("*";"qryMoyenne";"Moyenne>" &
replace([Moyenne];",";"."))+1



Je ne sais pas comment les profs gèrent le traitement des ex aequo.
En l'occurrence, s'il y a 2 élèves au 7e rang, le suivant devrait être
au 8e rang (et non au 9e comme on l'obtient avec cette formule).
Avec la mienne, ce n'est pas mieux :
Rang: CpteDom("*";"qryMoyenne";"[Moyenne] >= " &
Remplacer([Moyenne];",";"."))
On passe du 6e rang au 8e, et le suivant est bien 9e.
Il y a bien un exemple avec un select distinct sur le site
developpez.com donné tout à l'heure, mais avec des entiers.
Bref, à Willi de se débrouiller pour ne pas avoir d'ex aequo ;-)



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Eric
.../...
Contre-exemple, les Championnats du Monde ou les Jeux Olympiques.
S'il y a 2 premiers dans une épreuve, on distribue bien 2 médailles d'or
mais aussi la médaille d'argent et celle de bronze.
Bon, va savoir !!!

re,

En général si n ex-aequo sur une note, le suivant aura le rang de
l'ex-aequo + n valeurs, non ?
Dans ton exemple, puisqu'il y a deux 7ème, le suivant en terme de
classement sera le 9ème bien qu'il ait la 8ème meilleure note ;-)

En définitive, on va s'approprier le problème de Willi.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Tisane
.../...
Contre-exemple, les Championnats du Monde ou les Jeux Olympiques.
S'il y a 2 premiers dans une épreuve, on distribue bien 2 médailles
d'or mais aussi la médaille d'argent et celle de bronze.
Bon, va savoir !!!


Personnellement, je trouverais injuste d'être 9e au lieu de 8e sous prétexte
qu'il y en a 2 qui ont copié l'un sur l'autre ;-)
Mais bon, ça ne va pas nous gâcher notre dimanche...

--
Tisane

re,

En général si n ex-aequo sur une note, le suivant aura le rang de
l'ex-aequo + n valeurs, non ?
Dans ton exemple, puisqu'il y a deux 7ème, le suivant en terme de
classement sera le 9ème bien qu'il ait la 8ème meilleure note ;-)

En définitive, on va s'approprier le problème de Willi.




Avatar
Eric
Hello Tisane,

Une dédicace ! ;-)

Alors une requête nommée qryMoyenne donnant pour chaque élève sa moyenne.
Problématique : Plusieurs élèves peuvent avoir la même moyenne mais dans
le classement, s'il y a des ex-aequo, le suivant doit avoir pour rang
celui de sa moyenne dans la série (Spécial T.)

(Utilisation d'Alias dans le SQL)
le SQL de la requête est le suivant:
SELECT B.NomEleve, B.moyenne, DCount("*","qryMoyenne","Moyenne>" &
replace([B.Moyenne],",","."))+1 AS Rang, (SELECT count(*) FROM (SELECT
Distinct moyenne FROM qrymoyenne) AS A WHERE A.moyenne>B.moyenne)+1 AS
RangSpécialT
FROM qryMoyenne AS B
ORDER BY B.moyenne DESC;

Avec:
Rang: CpteDom("*";"qryMoyenne";"Moyenne>" &
replace([B.Moyenne];",";"."))+1 qui donne le rang 'classique', si 2
ex-aequo le suivant aura le rang de l'ex-aequo + 2

et
RangSpécialT: (SELECT count(*) FROM (SELECT Distinct moyenne FROM
qrymoyenne) AS A WHERE A.moyenne>B.moyenne)+1 qui attribue au rang de
l'élève le rang de sa moyenne dans la série.

Un exemple sera plus clair:
NomEleve moyenne Rang RangSpécialT
C 17,5 1 1
I 15 2 2
D 15 2 2
B 15 2 2
G 13 5 3 ' remarquez le changement ici
E 12,5 6 4
F 11,5 7 5
A 11,5 7 5
H 8 9 6 ' et là



Personnellement, je trouverais injuste d'être 9e au lieu de 8e sous
prétexte qu'il y en a 2 qui ont copié l'un sur l'autre ;-)
Mais bon, ça ne va pas nous gâcher notre dimanche...



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Tisane
Une dédicace ! ;-)


T'es pas sympa... Tu as vu ta formule ? Pour un dimanche ?
Elle est trop longue pour moi : je (me) suis limitée à 64 caractères
aujourd'hui ;-)
Après j'affiche "out of memory".

Merci beaucoup, Eric ! J'espère que Willi appréciera...
--
Tisane


Eric wrote:
Hello Tisane,

Une dédicace ! ;-)

Alors une requête nommée qryMoyenne donnant pour chaque élève sa
moyenne. Problématique : Plusieurs élèves peuvent avoir la même
moyenne mais dans le classement, s'il y a des ex-aequo, le suivant
doit avoir pour rang celui de sa moyenne dans la série (Spécial T.)

(Utilisation d'Alias dans le SQL)
le SQL de la requête est le suivant:
SELECT B.NomEleve, B.moyenne, DCount("*","qryMoyenne","Moyenne>" &
replace([B.Moyenne],",","."))+1 AS Rang, (SELECT count(*) FROM (SELECT
Distinct moyenne FROM qrymoyenne) AS A WHERE A.moyenne>B.moyenne)+1 AS
RangSpécialT
FROM qryMoyenne AS B
ORDER BY B.moyenne DESC;

Avec:
Rang: CpteDom("*";"qryMoyenne";"Moyenne>" &
replace([B.Moyenne];",";"."))+1 qui donne le rang 'classique', si 2
ex-aequo le suivant aura le rang de l'ex-aequo + 2

et
RangSpécialT: (SELECT count(*) FROM (SELECT Distinct moyenne FROM
qrymoyenne) AS A WHERE A.moyenne>B.moyenne)+1 qui attribue au rang de
l'élève le rang de sa moyenne dans la série.

Un exemple sera plus clair:
NomEleve moyenne Rang RangSpécialT
C 17,5 1 1
I 15 2 2
D 15 2 2
B 15 2 2
G 13 5 3 ' remarquez le changement ici
E 12,5 6 4
F 11,5 7 5
A 11,5 7 5
H 8 9 6 ' et là



Personnellement, je trouverais injuste d'être 9e au lieu de 8e sous
prétexte qu'il y en a 2 qui ont copié l'un sur l'autre ;-)
Mais bon, ça ne va pas nous gâcher notre dimanche...




1 2