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

Access Discussion :

Comment générer les moyennes des élèves de différents niveaux de classes ? [AC-2013]


Sujet :

Access

  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 Comment générer les moyennes des élèves de différents niveaux de classes ?
    Bonsoir membres du forum,
    J'essaie de générer les moyennes des différents niveaux avec 2 procédures;
    l'une pour les "MATERNELLE A" "CP1 A" et "CP2 A" (ClaculerMoyenne)
    et l'autre pour les "CE1 A" "CE2 A" et "CM1 A" "CM2 A" (ClaculerMoyenneCE2_CM).
    Toutes les deux procédures sont appelées ici:
    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
     
    Private Sub cmdCalcul01_Click()
    On Error Resume Next
    If LignesInserrees(Me.idCompoF) = False Then
        MsgBox "Attention !" & vbCrLf & "Aucune note n'a été " & vbCrLf & _
        "saisie pour cet élève !", vbExclamation + vbOKOnly, "Pas de Notes"
     
    Else
    If Me.Parent.NiveauEvaluationFr = "Maternelle" Or Me.Parent.NiveauEvaluationFr = _
    "CP1 A" Or Me.Parent.NiveauEvaluationFr = "CP2 A" Then
    ClaculerMoyenne
    End If
    If Me.Parent.NiveauEvaluationFr = "CE2 A" Or Me.Parent.NiveauEvaluationFr = _
    "CM1 A" Or Me.Parent.NiveauEvaluationFr = "CM1 A" Or Me.Parent.NiveauEvaluationFr = _
    "CM2 A" Then
    ClaculerMoyenneCE2_CM
    End If
     
    DoCmd.RunCommand acCmdRefresh
        'MAJ du bilan annuel de l'élève
        If Me.CompoFRANCAIS = "3" Then
                'Pause
            If BilanDejaGenereFr(Me.ID_Etab, Me.anscol, Me.mle_Eleve, Me.NiveauEvaluationFr) = False Then
                DoEvents
                Forms![NOTES DE COMPOSITIONS FR]!BILAN_ANNUEL_FRANCAIS.Form!MoyAnnuel = _
                MoyAnnuelleEleveFrancais(Me.anscol, Me.NiveauEvaluationFr, Me.mle_Eleve, Me.ID_Etab)
                Forms![NOTES DE COMPOSITIONS FR]!BILAN_ANNUEL_FRANCAIS.Form!Classement = "Non généré encore !"
                Forms![NOTES DE COMPOSITIONS FR]!BILAN_ANNUEL_FRANCAIS.Form!Appreciation = _
                AppreciationMoyenne(MoyAnnuelleEleveFrancais(Me.anscol, Me.NiveauEvaluationFr, Me.mle_Eleve, Me.ID_Etab))
     
                If MsgBox("La moyenne annuelle a été calculée, et l'appréciation générée..." & _
                 vbCrLf & "Il faudra afficher le bilan annuel de la classe pour voir le " _
                 & "rang général de la classe." & vbCrLf & "Voulez-vous voir son bilan ?", _
                 vbOKCancel + vbExclamation, "Bilan de l'élève") = vbOK Then
                Forms![NOTES DE COMPOSITIONS FR]!ctrl_onglet.Pages(2).SetFocus
                End If
            Else
                If MsgBox("La moyenne annuelle a déjà été calculée," & _
                 vbCrLf & "Il faudra afficher le bilan " & vbCrLf & _
                 "annuel de la classe pour voir le " _
                 & "rang général de la classe." & vbCrLf & _
                 "Voulez-vous voir son bilan ?", _
                 vbOKCancel + vbExclamation, "Bilan de l'élève") = vbOK Then
                Forms![NOTES DE COMPOSITIONS FR]!ctrl_onglet.Pages(2).SetFocus
                End If
        End If
    End If
    Me.NOTES_CLASSES_FRANCAIS_SF.Locked = True
    cmdCalcul02_Click
    End If
    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
     
    Sub ClaculerMoyenne()
    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
    Dim SQL As String
     
    'Mise à jour du total des notes
    SQL = "SELECT SUM(NoteFr*coef) AS TotalDesNotes FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF & ";"
    Set rst = db.OpenRecordset(SQL)
    If Not rst.EOF Then
        Me.Total_Notes = rst.Fields("TotalDesNotes")
    Else
        Me.Total_Notes = 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 = " & Me.idCompoF & ";"
     
    sqlNotesCoef = "SELECT SUM(NoteFr*coef) AS NotesCoef FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF & ";"
     
    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)
    Else
        Me.MoyenneCompo = 0
    End If
     
    'Mise à jour du total de l'appréciation
    Me.Appreciation = AppreciationMoyenne(Me.MoyenneCompo)
    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
    50
    51
    52
    53
    54
    55
    56
    57
     
     
    Sub ClaculerMoyenneCE2_CM()
    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
    Dim SQL As String
    '____________________
    Dim X As Long
    Dim Y As Long
    '____________________
    X = 17
    Y = 2
    '_____________________________
     
    'Mise à jour du total des notes
    SQL = "SELECT SUM(NoteFr*coef) AS TotalDesNotes FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF & ";"
    Set rst = db.OpenRecordset(SQL)
    If Not rst.EOF Then
        Me.Total_Notes = rst.Fields("TotalDesNotes")
    Else
        Me.Total_Notes = 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 = " & Me.idCompoF & ";"
     
    sqlNotesCoef = "SELECT SUM(NoteFr*coef) AS NotesCoef FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF & ";"
     
    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)
    Me.MoyenneCompo = (Round(rstNCoef.Fields("NotesCoef")) / X) * Y
    Else
        Me.MoyenneCompo = 0
    End If
     
    'Mise à jour du total de l'appréciation
    If Me.Parent.NiveauEvaluationFr = "Maternelle" Or Me.Parent.NiveauEvaluationFr = _
    "CP1 A" Or Me.Parent.NiveauEvaluationFr = "CP2 A" Then
    Me.Appreciation = AppreciationMoyenne(Me.MoyenneCompo)
    End If
    If Me.Parent.NiveauEvaluationFr = "CE2 A" Or Me.Parent.NiveauEvaluationFr = _
    "CM1 A" Or Me.Parent.NiveauEvaluationFr = "CM1 A" Or Me.Parent.NiveauEvaluationFr = _
    "CM2 A" Then
    Me.Appreciation = AppreciationMoyenne_2ndaire(Me.MoyenneCompo)
    End If
    End Sub
    Mon objectif est de pouvoir générer les moyennes selon la classe active au clique sur la commande cmdCalcul01_Click
    L'erreur constatée est que seule la procédure ClaculerMoyenneCE2_CM marche.
    Comment atteindre mon but ?
    Cordialement.
    Fichiers attachés Fichiers attachés
    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
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Assurez-vous lorsque vous déposez un fichier que ce dernier soit fonctionnel. Ce qui ne l'est pas avec le votre ! Les tbl nécessaires au traitement de votre problème sont liées !
    En L9/L10 et L13/L14 du 1er code pourquoi avez-vous Parent, dans la syntaxe ? La cbo NiveauEvaluationFr,se trouve sur le même niveau que le btn cmdCalcul01. (img1). L13/L15 quand calculez-vous CE1 A ?
    Il y a des erreurs de calculs ! (img2 et 4)
    Sinon a priori ça fonctionne ! (img3 et 4)
    Images attachées Images attachées     
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  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
    Bonjour hyperion13,
    Salut
    Assurez-vous lorsque vous déposez un fichier que ce dernier soit fonctionnel. Ce qui ne l'est pas avec le votre ! Les tbl nécessaires au traitement de votre problème sont liées !
    Désolé!
    Je vous rappelle que cette discussion est en rapport avec la pièce jointe de celle ci https://www.developpez.net/forums/d2...es-intervalle/
    Les tables d'origine s'y trouvent.
    Vous pouvez remplacer les tables liées par les
    tables d'origine de la pièce jointe du lien indiqué.
    Bien à vous hyperion13.
    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

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    Je vous rappelle que cette discussion est en rapport avec la pièce jointe de celle ci
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Il ne nous revient pas de deviner que l'objet de cette discussion est en rapport avec un autre fil de discussion.
    Assurez-vous de déposer des fichiers fonctionnels.
    Citation Envoyé par morobaboumar Voir le message
    Je vous rappelle que cette discussion est en rapport avec la pièce jointe de celle ci https://www.developpez.net/forums/d2...es-intervalle/
    Les tables d'origine s'y trouvent. Vous pouvez remplacer les tables liées par les tables d'origine de la pièce jointe du lien indiqué.
    img2 et 3 montrent (fenêtre d'exécution) que les calculs sont justes une fois le Parent supprimé de la syntaxe dans vos 2 blocs IF en L9/L10 et L13/L14.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  6. #6
    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
    Autant pour moi. Je vous prie de bien vouloir révrenir sur le post 2. J'y ai ajouté l'explication restante.
    A+
    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

  7. #7
    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
    Je le ferais dès que le courant électronique
    revient car en moment il pleut fort chez nous.
    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

  8. #8
    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
    .img2 et 3 montrent (fenêtre d'exécution) que les calculs sont justes une fois le Parent supprimé de la syntaxe dans vos 2 blocs IF en L9/L10 et L13/L14.
    Je viens de supprimer le parent entre les deux blocs IF comme suggéré mais le calcul des moyennes est correcte au niveau des CE2 en CM2 par contre au niveau des MATERNELLE jusqu'en CE1 A il y a des erreurs.

    Nom : CaptureMoyennes1.PNG
Affichages : 110
Taille : 59,1 Ko AVEC Sub ClaculerMoyenne()

    Nom : CaptureMoyennes2.PNG
Affichages : 108
Taille : 57,0 Ko ...AVEC Sub ClaculerMoyenneCE2_CM()

    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

  9. #9
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    re,
    euh ...
    en img 1 à 4, ça fonctionne
    Images attachées Images attachées     
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  10. #10
    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
    Ça devrait marcher. Je donne encore quelques détails
    de la MATERNELLE en CE1A les notes sont à 10/10. Ensuite, du CE2 A en CM2 A
    les notes des matières sont: Orthographe/20, ÉTUDE DE TEXTE /50, ÉVEIL AU MILIEU/50, MATHÉMATIQUES /50.
    Ensuite les points totaux 170 divisés par 17
    multipliés par 2. Voici le pourquoi des 2 procédures.
    Les points du premier groupe divisés par le nombre de matières et ceux du second groupe sont divisés par 17 et multipliés par 2 pour trouver une moyenne de 0 à 20
    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

  11. #11
    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
    Bonsoir membre du forum,
    Mes difficultés se trouvent au niveau de ces lignes de codes de la commande cmdCalcul01_Click()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Else
    If Me.Parent.NiveauEvaluationFr = "Maternelle" Or Me.Parent.NiveauEvaluationFr = _
    "CP1 A" Or Me.Parent.NiveauEvaluationFr = "CP2 A" Then
    ClaculerMoyenne
    End If
    If Me.Parent.NiveauEvaluationFr = "CE2 A" Or Me.Parent.NiveauEvaluationFr = _
    "CM1 A" Or Me.Parent.NiveauEvaluationFr = "CM1 A" Or Me.Parent.NiveauEvaluationFr = _
    "CM2 A" Then
    ClaculerMoyenneCE2_CM
    End If
    Comment générer les 2 procédures ClaculerMoyenne et ClaculerMoyenneCE2_CM selon les classes indiquées ?
    Pièce jointe complète
    Cordialement.
    Fichiers attachés Fichiers attachés
    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

  12. #12
    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
    Bonsoir membres du forum,
    J'ai apporté des modifications au code mais il ramène les moyennes selon les niveaux
    If Me.NiveauEvaluationFr = "CE2 A" Or Me.NiveauEvaluationFr = _
    "CM1 A" Or Me.NiveauEvaluationFr = "CM2 A" Then
    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
     
     
    Sub ClaculerMoyenne()
    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
    Dim SQL As String
     
    'Mise à jour du total des notes
    SQL = "SELECT SUM(NoteFr) AS TotalDesNotes FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF & ";"
    Set rst = db.OpenRecordset(SQL)
    If Not rst.EOF Then
        Me.Total_Notes = rst.Fields("TotalDesNotes")
    Else
        Me.Total_Notes = 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 = " & Me.idCompoF & ";"
     
    sqlNotesCoef = "SELECT SUM(NoteFr) AS NotesCoef FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF & ";"
     
    Set rstCoef = db.OpenRecordset(sqlCoef)
     
    Set rstNCoef = db.OpenRecordset(sqlNotesCoef)
    '___________________________________________________________
    If Me.NiveauEvaluationFr = "MATERNELLE" Or Me.NiveauEvaluationFr = _
    "CP1 A" Or Me.NiveauEvaluationFr = "CP2 A" Then
    '___________________________________________________________
    If Not rstNCoef.EOF And Not rstCoef.EOF Then
        Me.MoyenneCompo = Round(rstNCoef.Fields("NotesCoef") / rstCoef.Fields("TotalDesCoef"), 2)
    Else
        Me.MoyenneCompo = 0
    End If
     
    'Mise à jour du total de l'appréciation
    Me.Appreciation = AppreciationMoyenne(Me.MoyenneCompo)
     
    If Me.NiveauEvaluationFr = "CE2 A" Or Me.NiveauEvaluationFr = _
    "CM1 A" Or Me.NiveauEvaluationFr = "CM2 A" Then
    '___________________________________________________________
    If Not rstNCoef.EOF And Not rstCoef.EOF Then
        Me.MoyenneCompo = (Round(rstNCoef.Fields("NotesCoef") / rstCoef.Fields("TotalDesCoef"), 2)) * 2
    Else
        Me.MoyenneCompo = 0
    End If
     
    'Mise à jour du total de l'appréciation
    Me.Appreciation = AppreciationMoyenne_2ndaire(Me.MoyenneCompo)
    End If
    End If
    End Sub
    Votre aide est très précieuse pour moi.
    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

  13. #13
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    re,
    A priori vous êtes fâché avec les maths, les proportions, etc. Rien de mieux que de revoir, pourquoi pas les Théorèmes de Thalès et de Pythagore.
    Citation Envoyé par morobaboumar Voir le message
    ... Ça devrait marcher. Je donne encore quelques détails
    de la MATERNELLE en CE1A les notes sont à 10/10. Ensuite, du CE2 A en CM2 A
    les notes des matières sont: Orthographe/20, ÉTUDE DE TEXTE /50, ÉVEIL AU MILIEU/50, MATHÉMATIQUES /50...
    Surtout quand je vois votre calcul ci-dessous.
    Citation Envoyé par morobaboumar Voir le message
    ... Ensuite les points totaux 170 divisés par 17 multipliés par 2...
    Ce que vous nommez dans le frm NotesCoefficiee,et Total_Notes, devrait être renommé NombrePoints,et Total_Points.
    Vous notez les épreuves sur la base de 10.
    CP2 A, on doit corriger 6 épreuves dont le coef est 1. Cela signifie que chaque épreuve aura au max 10 points (coef * 10 = 1 * 10). La somme total coef sera 60 (6 * coef * 10 = 6 * 1 * 10)
    img1, le candidat a obtenu 27 points. Sa moyenne (ou note sur 10) sera de (27 * 10) / 60 = 4,5
    Même raisonnement en img2.
    J'irai jusqu'à écrire que ce sont les points (NoteCoefficiee) qu'il faut saisir, pour qu'ensuite la note/10 (NoteFr) soit calculée.
    Une seule fct permet de calculer point, note, moyenne sans distinction de classes
    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
    Sub ClaculerMoyenne()
    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
    Dim SQL As String
     
    'Mise à jour du total des notes
    SQL = "SELECT Sum(NoteFr) AS TotalNotesFr, Sum(coef) AS TotalCoef, SUM(NoteFr*coef) AS TotalDesNotes FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF
    Set rst = db.OpenRecordset(SQL)
    If Not rst.EOF Then
        Me.Total_Notes = rst.Fields("TotalDesNotes")
    Else
        Me.Total_Notes = 0
    End If
     
    'Mise à jour du total des Coef et de la Moyenne
     
    sqlNotesCoef = "SELECT SUM(NoteFr*coef) AS NotesCoef FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF
     
    sqlCoef = "SELECT SUM(coef) AS TotalDesCoef FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF
     
    Set rstNCoef = db.OpenRecordset(sqlNotesCoef)
     
    Set rstCoef = db.OpenRecordset(sqlCoef)
     
    If Not rstNCoef.EOF And Not rstCoef.EOF Then
        Me.MoyenneCompo = Round((rstNCoef(0).Value * 10) / (rstCoef(0).Value * 10), 2)
    Else
        Me.MoyenneCompo = 0
    End If
     
    'Mise à jour du total de l'appréciation
    If Me.NiveauEvaluationFr = "Maternelle" Or Me.NiveauEvaluationFr = "CP1 A" Or Me.NiveauEvaluationFr = "CP2 A" Then
        Me.Appreciation = AppreciationMoyenne(Me.MoyenneCompo)
    End If
    If Me.NiveauEvaluationFr = "CE1 A" Or Me.NiveauEvaluationFr = "CE2 A" Or Me.NiveauEvaluationFr = "CM1 A" Or Me.NiveauEvaluationFr = "CM2 A" Then
        Me.Appreciation = AppreciationMoyenne_2ndaire(Me.MoyenneCompo)
    End If
    End Sub
    Images attachées Images attachées   
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  14. #14
    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
    Bonsoir Hyperion13,
    Permettez moi de souligner quelques remarques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Note_AfterUpdate()
    Me.NoteCoefficiee = Me.NoteFr / Me.coef
    End Sub
    Sur cette image, l’élève devrait avoir un total (155 points /17 = 9,12) * 2 = 18,24 sur 20 pour un total de points/170
    pour les niveaux CE2 A, CM1 A, et CM2 A
    Par contre les niveaux MATERNELLE, CP1 A, CP2 A, et CE1 A, les notes sont de 0 à 10/10

    Nom : CaptureMoyennes3.PNG
Affichages : 90
Taille : 68,4 Ko
    Nom : CaptureMoyennes4.png
Affichages : 95
Taille : 329,2 Ko


    Non sans être reconnaissant pour vos aides précieuses. Je vous prie d’être patient avec moi car je ne suis qu’un apprenant.
    Pourriez vous revoir les calculs dans le code que vous venez de poster.
    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

  15. #15
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    re,
    Je ne sais pas ce que vous bricolez sur votre bdd !
    Dans un module standard, copier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Compare Database
    Public Const BASE_10 As Integer = 10 ' base notation maternelle à cp2
    Public Const BASE_20 As Integer = 20 ' base notation ce1 à cm2
    Dans le frm NOTES_NIVEAU_FRANCAIS_SF, passez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub NoteFr_AfterUpdate()
    'Me.NoteCoefficiee = Me.Note / Me.coef
    If Me.Parent.NiveauEvaluationFr = "MATERNELLE" Or Me.Parent.NiveauEvaluationFr = _
        "CP1 A" Or Me.Parent.NiveauEvaluationFr = "CP2 A" Then
        Me.NoteCoefficiee = (Me.NoteFr * BASE_10) / (Me.coef * BASE_10)
    End If
    If Me.Parent.NiveauEvaluationFr = "CE1 A" Or Me.Parent.NiveauEvaluationFr = _
        "CE2 A" Or Me.Parent.NiveauEvaluationFr = "CM1 A" Or Me.Parent.NiveauEvaluationFr = _
        "CM2 A" Then
        Me.NoteCoefficiee = (Me.NoteFr * BASE_20) / (Me.coef * BASE_20) ' note / 10
        'Me.NoteCoefficiee = (Me.NoteFr * BASE_20) / (Me.coef * BASE_10) ' note / 20
    End If
    End Sub
    Dans le frm INFOS_COMPOSITION_FRANCAIS_SF, passez
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Private Sub cmdCalcul01_Click()
    Dim dbs As DAO.Database
    Dim rst As DAO.Recordset
    Dim SQL As String
     
    On Error Resume Next
     
    Set dbs = CurrentDb
     
    SQL = "SELECT SUM(NoteFr) AS TotalPoints, Sum(coef) AS TotalCoef FROM NOTES_CLASSES_FRANCAIS WHERE idCF = " & Me.idCompoF
    Set rst = dbs.OpenRecordset(SQL)
     
    If LignesInserrees(Me.idCompoF) = False Then
        MsgBox "Attention !" & vbCrLf & "Aucune note n'a été " & vbCrLf & _
        "saisie pour cet élève !", vbExclamation + vbOKOnly, "Pas de Notes"
    Else
        If Me.NiveauEvaluationFr = "Maternelle" Or Me.NiveauEvaluationFr = "CP1 A" Or Me.NiveauEvaluationFr = "CP2 A" Then
            If Not rst.EOF Then
                Me.Total_Notes = rst(0).Value ' total des points
            Else
                Me.Total_Notes = 0
            End If
            If Not rst.EOF Then
                Me.MoyenneCompo = Round((rst(0).Value * BASE_10) / (rst(1).Value * BASE_10), 2) ' note finale
            Else
                Me.MoyenneCompo = 0
            End If
     
            Me.Appreciation = AppreciationMoyenne(Me.MoyenneCompo)
     
        End If
        If Me.NiveauEvaluationFr = "CE1 A" Or Me.NiveauEvaluationFr = "CE2 A" Or Me.NiveauEvaluationFr = "CM1 A" Or Me.NiveauEvaluationFr = "CM2 A" Then
            If Not rst.EOF Then
                Me.Total_Notes = rst(0).Value ' total des points
            Else
                Me.Total_Notes = 0
            End If
            If Not rst.EOF Then
                Me.MoyenneCompo = Round((rst(0).Value * BASE_20) / (rst(1).Value * BASE_10), 2) ' note finale
            Else
                Me.MoyenneCompo = 0
            End If
     
            Me.Appreciation = AppreciationMoyenne_2ndaire(Me.MoyenneCompo)
        End If
     
        DoCmd.RunCommand acCmdRefresh
        'MAJ du bilan annuel de l'élève
            If Me.CompoFRANCAIS = "3" Then
                'Pause
                If BilanDejaGenereFr(Me.ID_Etab, Me.anscol, Me.mle_Eleve, Me.NiveauEvaluationFr) = False Then
                    DoEvents
                    Forms![NOTES DE COMPOSITIONS FR]!BILAN_ANNUEL_FRANCAIS.Form!MoyAnnuel = _
                    MoyAnnuelleEleveFrancais(Me.anscol, Me.NiveauEvaluationFr, Me.mle_Eleve, Me.ID_Etab)
                    Forms![NOTES DE COMPOSITIONS FR]!BILAN_ANNUEL_FRANCAIS.Form!Classement = "Non généré encore !"
                    Forms![NOTES DE COMPOSITIONS FR]!BILAN_ANNUEL_FRANCAIS.Form!Appreciation = _
                    AppreciationMoyenne(MoyAnnuelleEleveFrancais(Me.anscol, Me.NiveauEvaluationFr, Me.mle_Eleve, Me.ID_Etab))
     
                        If MsgBox("La moyenne annuelle a été calculée, et l'appréciation générée..." & _
                             vbCrLf & "Il faudra afficher le bilan annuel de la classe pour voir le " _
                             & "rang général de la classe." & vbCrLf & "Voulez-vous voir son bilan ?", _
                             vbOKCancel + vbExclamation, "Bilan de l'élève") = vbOK Then
                            Forms![NOTES DE COMPOSITIONS FR]!ctrl_onglet.Pages(2).SetFocus
                        End If
                Else
                    If MsgBox("La moyenne annuelle a déjà été calculée," & _
                         vbCrLf & "Il faudra afficher le bilan " & vbCrLf & _
                         "annuel de la classe pour voir le " _
                         & "rang général de la classe." & vbCrLf & _
                         "Voulez-vous voir son bilan ?", _
                         vbOKCancel + vbExclamation, "Bilan de l'élève") = vbOK Then
                        Forms![NOTES DE COMPOSITIONS FR]!ctrl_onglet.Pages(2).SetFocus
                    End If
                End If
        End If
        Me.NOTES_CLASSES_FRANCAIS_SF.Locked = True
        cmdCalcul02_Click
    End If
    End Sub
    Les sub Sub ClaculerMoyenne(),et Sub ClaculerMoyenneCE2_CM(),ne sont plus nécessaires.
    Images attachées Images attachées   
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  16. #16
    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 Remerciement
    Bonsoir hyperion13,
    Je vous remercie infiniment et je vous dois beaucoup de respect.
    Après quelques essais, je peux dire que cette discussion est résolue.
    Merci merci merci.
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD20E] Générer les matricules des élèves en WLangage
    Par RobertSiba dans le forum WinDev
    Réponses: 2
    Dernier message: 21/09/2019, 11h23
  2. Réponses: 2
    Dernier message: 14/12/2009, 18h19
  3. Comment dééfinir les valeurs des abscisses en Time ?
    Par marsupilami34 dans le forum Langage
    Réponses: 1
    Dernier message: 29/09/2005, 15h50
  4. Comment fixer les largeurs des colonnes d'un TStrinGrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/08/2005, 13h24
  5. Comment obtenir les Handles des boutons systèmes de Windows ?
    Par Desraux dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 22/12/2004, 22h20

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