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

obtenir les rangs ds un état de bulletin basé sur une requête.

2 réponses
Avatar
DECADJEVI Idelphonse
en fait j'ai basé mon état d'édition des bulletin sur une requête qui elle
même a pour source une autre requête.
la 1ère requête me calcule les moyenne par élève , par matière et par type
de notes( interrogation ou devoir). Puis la 2nde requête me donne la moyenne
par matière et par élève.
je voudrais donc obtenir les rangs par matières et les rangs (général au
niveau d'une classe donnée) avec possibilité de gestion des exécos( 1er ; 1er
ex....)
merci de m'aider. c'est urgent SVP

2 réponses

Avatar
Raymond [mvp]
Bonjour.

Je pense que tu es professeur des écoles ou prof dans le secondaire ?
Si c'est exact, dis bien à tes élèves que lorsque deux personnes ont obtenu
le même rang elles sont ex aequo et non exécos. Ex aequo est invariable, ne
prend pas de tiret et se prononce [egzeko].
Essayons, même dans les news, d'écrire en français et de ne pas écrire comme
dans les SMS.
Merci pour la langue française.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"DECADJEVI Idelphonse" a
écrit dans le message de news:

en fait j'ai basé mon état d'édition des bulletin sur une requête qui elle
même a pour source une autre requête.
la 1ère requête me calcule les moyenne par élève , par matière et par type
de notes( interrogation ou devoir). Puis la 2nde requête me donne la
moyenne
par matière et par élève.
je voudrais donc obtenir les rangs par matières et les rangs (général au
niveau d'une classe donnée) avec possibilité de gestion des exécos( 1er ;
1er
ex....)
merci de m'aider. c'est urgent SVP


Avatar
Eric
Bonjour,

Une solution à améliorer, faite rapidement compte tenu de l'urgence.
Ce qui suit concerne le classement général avec ex aequo. Je n'ai pas
envisagé, pour faire simple, le cas des doublons sur les noms ; dans ce
cas il suffit de remplacer le champ NomEleve par une concaténation des
champs Nom et Prenom.
Toujours par souci de simplification, j'ai considéré un champ Moyenne
fixe alors que dans ton cas, le champ moyenne est un champ calculé.

1 - Tu crées une requête te donnant la moyenne générale des élèves avec
les champs suivants, dans cet ordre :
NomEleve
Moyenne (tri décroissant)
NomEleve (tri croissant - Case Affiché non cochée)

Soit RQNOTES cette requête. Le nom de la requête est
important car utilisé dans la procédure Classement.

2 - Dans un module global

Déclares, sous Option Compare Database, les 2 tableaux suivants:
Public tablo, tmp() sans les typer

et copies le code suivant:

a - Procédure pour le classement
(Ajouter la référence DAO 3.x au projet)

Sub Classement()
Dim rst As DAO.Recordset
Dim nb As Long, i As Long
Set rst = CurrentDb.OpenRecordset("RQNOTES")
nb = rst.RecordCount
ReDim tmp(nb - 1, 2)
tablo = rst.GetRows(rst.RecordCount)
For i = 0 To UBound(tablo, 2)
tmp(i, 0) = tablo(0, i)
tmp(i, 1) = tablo(1, i)
Next i
tmp(0, 2) = CStr(1) & "e"
For i = 1 To nb - 1
If tmp(i, 1) = tmp(i - 1, 1) Then
If InStr(tmp(i - 1, 2), "ex aequo") = 0 Then
tmp(i, 2) = tmp(i - 1, 2) & " ex aequo"
Else
tmp(i, 2) = tmp(i - 1, 2)
End If
Else
tmp(i, 2) = CStr(i + 1) & "e"
End If
Next i
Set rst = Nothing
End Sub

b - Fonction retournant le rang de l'élève

Function fnRang(UnNom As String) As String
Dim i As Long, nb As Long
Call Classement
nb = UBound(tmp) + 1
For i = 0 To nb
If tmp(i, 0) = UnNom Then
fnRang = tmp(i, 2)
Exit For
End If
Next i
Erase tmp, tablo
End Function

3 - Création de la requête RQNOTES+CLASSEMENT
avec les champs suivants :
NomEleve
Moyenne (tri décroissant)
Rang: fnRang([NomEleve])
NomEleve (tri croissant - Case Affiché non cochée)

Avec cette méthode, si l'élève C a la meilleur moyenne (18) et l'élève J
a la même moyenne que C alors :
C sera déclaré 1er
J sera déclaré 1er ex aequo

Cette requête RQNOTES+CLASSEMENT servira de base à ton état.

Espérant que ce début t'avance dans ton projet.
PS:Je peux te faire passer cet exemple si tu veux

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

en fait j'ai basé mon état d'édition des bulletin sur une requête qui elle
même a pour source une autre requête.
la 1ère requête me calcule les moyenne par élève , par matière et par type
de notes( interrogation ou devoir). Puis la 2nde requête me donne la moyenne
par matière et par élève.
je voudrais donc obtenir les rangs par matières et les rangs (général au
niveau d'une classe donnée) avec possibilité de gestion des exécos( 1er ; 1er
ex....)
merci de m'aider. c'est urgent SVP