IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Quelle est la solution pour calculer les moyennes et rangs de l'ensemble des élèves ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Quelle est la solution pour calculer les moyennes et rangs de l'ensemble des élèves ?
    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
    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 '******************************************************************************** '********************************************************************************
    Cordialement
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour. Regarde ici

    Cordialement
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  3. #3
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    Bonjour Membres du forum !
    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 : 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
     
    '********************CALCUL DE LA MOYENNE DE TOUS LES ELEVES (Année Scolaire, Classe,Nature Compo)
    '********************************************************************************
    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_FRANCAIS WHERE anscol='" & Me.ANNEE_SCOL & "' AND ClasseFr='" & Me.classeFrancais & "' AND NatureCompoAr='" & Me.NatureCompo & "' ;"
     
    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("idCompoF"))
     
                'Génération de l'appréciation
                rst.Fields("Appreciation") = AppreciationMoyenne(MoyenneEleve(rst.Fields("idCompoF")))
     
                '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
    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
     
    '****************************************************************
    '**********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(Note*coef) AS TotalDesNotes FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & 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_FRANCAIS WHERE idCF = " & NoCompo & ";"
     
    sqlNotesCoef = "SELECT SUM(Note*coef) AS NotesCoef FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & 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
    '********************************************************************************
    '********************************************************************************
    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
     
    'Appreciation utilisée pour une note et une moyenne
    Public Function AppreciationMoyenne(Moy As Single) As String
    If Not IsNull(Moy) Then
     If Moy = 10 Then
       AppreciationMoyenne = "Excellent"
     Else
        If Moy >= 9 Then
          AppreciationMoyenne = "Très bien"
        Else
           If Moy >= 8 Then
            AppreciationMoyenne = "Bien"
           Else
              If Moy >= 6 Then
                AppreciationMoyenne = "Assez bien"
              Else
                 If Moy >= 5 Then
                  AppreciationMoyenne = "Passable"
                 Else
                  If Moy >= 4.25 Then
                   AppreciationMoyenne = "Insuffisant"
                  Else
                     If Moy >= 3.5 Then
                      AppreciationMoyenne = "Faible"
                     Else
                        If Moy >= 0 Then
                        AppreciationMoyenne = "Très Faible"
                        End If
                     End If
                  End If
                 End If
              End If
           End If
        End If
     End If
    End If
    End Function
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

Discussions similaires

  1. [XL-2007] Quelle est la technique pour stocker les données d'un employé ?
    Par c.piette dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/04/2015, 16h43
  2. Réponses: 2
    Dernier message: 20/09/2011, 21h57
  3. Réponses: 17
    Dernier message: 23/12/2010, 07h43
  4. [Graphics View] Quelle solution pour créer les schémas ?
    Par katanaenmousse dans le forum Débuter
    Réponses: 4
    Dernier message: 05/09/2010, 20h21
  5. Réponses: 2
    Dernier message: 28/06/2006, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo