obtenir les rangs ds un état de bulletin basé sur une requête.
2 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <decadjeviidelphonse@discussion.microsoft.com> a
écrit dans le message de news:
B4FEFCC0-AFFC-43BA-9AA7-49550F61E7B3@microsoft.com...
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
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
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
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
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