Bonjour membres du forum,
Très heureux de vous retrouver.
La fonction suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 ' ++++ Fonct. pour Générer le RANG d'un ELEVE pour une COMPOSITION dans une Classe Arabe Public Sub RangClasseCompoArabe(AnneeScol As String, claSar As String, Nat As Long) Dim db As Database Dim rst As Recordset Dim sql As String Dim i As Integer Dim j As Integer Dim K As Integer Dim Moy As Single Set db = CurrentDb sql = "select * from INFOS_COMPOSITION_ARABE where anscol = '" & AnneeScol & "' and ClasseArabe = '" & claSar & "' and CompoArabe = " & Nat & " order by MoyenneCompo desc ;" Set rst = db.OpenRecordset(sql) If Not rst.EOF Then rst.MoveLast rst.MoveFirst 'bolEx = True i = 1 K = 1 Do While Not rst.EOF rst.Edit If rst.Fields("Statut") = "Classé" Then 'L'élève est classé If i = 1 Then If GenreEleve(rst.Fields("mle_Eleve")) = "Masculin" Then rst.Fields("Classement") = i & "er" Else rst.Fields("Classement") = i & "ère" End If Else If Moy = rst.Fields("MoyenneCompo") Then If K = 1 Then 'Traitement du 1er Ex-Equo j = i - 1 rst.Fields("Classement") = j & "è ex." K = K + 1 Else rst.Fields("Classement") = j & "è ex." End If Else K = 1 rst.Fields("Classement") = i & "è" End If End If rst.Update Moy = rst.Fields("MoyenneCompo") i = i + 1 rst.MoveNext Else 'L'élève n'est pas classé rst.Fields("Classement") = "NC" rst.Update rst.MoveNext End If Loop End If rst.Close Set rst = Nothing End Subdevrait ramener le générer le rang d'un élève pour une composition tel que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Public Function GenreEleve(idX As Long) As String On Error GoTo ROUBABOU If IsNull(idX) Then Exit Function Dim db As Database Dim rst As Recordset Dim sql As String Set db = CurrentDb sql = "select * from ELEVE where mleeleve = " & idX & " ;" Set rst = db.OpenRecordset(sql) If Not rst.EOF Then GenreEleve = Trim(rst.Fields("genre")) Else GenreEleve = "" End If Exit Function ROUBABOU: MsgBox "Erreur n° " & err.Number & vbCrLf & err.Description, vbCritical + vbOKOnly, "Une erreur est survenue" End Function
a) si l’élève est du genre « masculin », ayant la plus grande moyenne des notes, son rang s’affiche comme : 1er,
b) si l’élève est du genre « féminin », ayant la plus grande moyenne des notes, son rang s’affiche comme : 1ère
c) en cas d’ex éco, les élèves du genre « masculin », ayant la plus grande moyenne des notes, leur rang s’affiche comme : 1er et 1er ex.
d) en cas d’ex éco, les élèves du genre « féminin », ayant la plus grande moyenne des notes, leur rang s’affiche comme : 1ère et 1ére ex., etc.
Mais il y a une erreur dans le fonctionnement de la 1ere fonction qui est:
- voici 2 èlèves qui sont 1er de la classe.
Au niveau du Rang: pour la fille 1ère, et le garçon au lieu de 1er ex.,
c'est 1è ex. qui est affiché.
Voir la capture:
Comment résoudre ce problème.
Cordialement
Partager