Bonjour Membres du forum !
Permettez de reprendre notre discussion.
En effet, toutes les corrections précédentes marchent parfaitement.
Maintenant après avoir créé une commande:CmdMoyennes_Classe "Moyennes globales classe". Quelle est la solution pour calculer les moyennes et rangs de l'ensemble des élèves en même temps pour une composition ?
Voici les codes:
[CODE]Private Sub CmdMoyennes_Classe_Click() 'INFOS_COMPOSITION_ARABE If MsgBox("Calcul global des moyennes : " & Me.ClasseArabe & " - " & Me.CompoArabe.Column(1) & " (" & Me.anscol & ") ?", vbQuestion + vbYesNo, "Calcul des Moyennes") = vbNo Then Exit Sub CalculTouteslesMoyennes DoEvents * MsgBox "Les moyennes de : " & Me.ClasseArabe & ", Compo : " & Me.CompoArabe.Column(1) & " (" & Me.anscol & ") ont été calculées.", vbInformation + vbOKOnly, "Calcul des Moyennes" Actualiser_Click cmdCalcul01_Click
End Sub
/CODE]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2'**********CALCUL DE LA MOYENNE D'UN ELEVE*********************** Function MoyenneEleve(NoCompo As Long) As Single 'On Error Resume Next Dim db As Database Dim rst As Recordset Dim rstNCoef As Recordset Dim rstCoef As Recordset Dim sqlNotesCoef As String Dim sqlCoef As String Dim idX As Long * Set db = CurrentDb * 'Mise à jour du total des notes sql = "SELECT SUM(NoteAr*coef) AS TotalDesNotes FROM NOTES_CLASSES_ARABES WHERE idCA = " & NoCompo & ";" Set rst = db.OpenRecordset(sql) If Not rst.EOF Then 'Me.Total_Notes = rst.Fields("TotalDesNotes") N_TotalNotes = rst.Fields("TotalDesNotes") Else 'Me.Total_Notes = 0 N_TotalNotes = 0 End If * 'Mise à jour du total des Coef et de la Moyenne sqlCoef = "SELECT SUM(coef) AS TotalDesCoef FROM NOTES_CLASSES_ARABES WHERE idCA = " & NoCompo & ";" * sqlNotesCoef = "SELECT SUM(NoteAr*coef) AS NotesCoef FROM NOTES_CLASSES_ARABES WHERE idCA = " & NoCompo & ";" * Set rstCoef = db.OpenRecordset(sqlCoef) * Set rstNCoef = db.OpenRecordset(sqlNotesCoef) * If Not rstNCoef.EOF And Not rstCoef.EOF Then 'Me.MoyenneCompo = Round(rstNCoef.Fields("NotesCoef") / rstCoef.Fields("TotalDesCoef"), 2) MoyenneEleve = Round(rstNCoef.Fields("NotesCoef") / rstCoef.Fields("TotalDesCoef"), 2) Else 'Me.MoyenneCompo = 0 MoyenneEleve = 0 End If * 'Mise à jour du total de l'appréciation * Me.Appreciation = AppreciationMoyenne(Me.MoyenneCompo) End Function
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2'******************************************************************************** '******************************************************************************** '******************************************************************************** Sub CalculTouteslesMoyennes() On Error GoTo CCIW Dim db As Database Dim rst As Recordset Dim strSQL As String Set db = CurrentDb * strSQL = "SELECT * FROM INFOS_COMPOSITION_ARABE WHERE anscol='" & Me.anscol & "'AND ClasseArabe='" & Me.ClasseArabe & "'AND CompoArabe=" & Me.CompoArabe & "AND ID_Etab=" & Me.ID_Etab & ";" * Set rst = db.OpenRecordset(strSQL) * If Not rst.EOF Then rst.MoveFirst Do While Not rst.EOF rst.Edit DoEvents 'Calcul de la moyenne rst.Fields("MoyenneCompo") = MoyenneEleve(rst.Fields("idCompoA")) * 'Génération de l'appréciation rst.Fields("Appreciation") = AppreciationMoyenne(MoyenneEleve(rst.Fields("idCompoA"))) * 'Total des Notes * Coef rst.Fields("Total_Notes") = N_TotalNotes * rst.Update * rst.MoveNext * DoEvents Loop Else End If * Exit Sub CCIW: MsgBox err.description, vbExclamation + vbOKOnly, "Erreur n° " & err.Number End Sub '******************************************************************************** '********************************************************************************
Partager