Calcul de la moyenne

Soyez le premier à donner votre avis sur cette source.

Vue 21 099 fois - Téléchargée 1 126 fois

Description

C'est un petit programme qui calcule la moyenne trimestrielle dans une classe au collège. Je ne suis qu'un débutant alors toutes les remarques seront les bienvenues.

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009

Hello,

ton programme n'est pas mal en soi, tu dois juste apprendre quelques petites choses:
- quand on a plein de labels ou controles, il faut créer des groupes avec la propriété index
- pareil pour les variables, il faut utiliser des tableaux
- Toujours utiliser Option explicit et déclarer ses variables
- on ne doit jamais avoir de code dupliqué.

Bref, avec tout ça, tu peux commencer à lire un bon livre de VB. Ci joint, un petit corrigé de ton code. Il fonctionne à l'identique, mais tient compte des remarques précédentes. Pour que cela focntionne, il faut renommer certains controles et les indicer. Si tu me contactes directement, je peux t'envoyer le projet par mail.



'---------------------------------------------------------------------------------------
' Module : frm1
' DateTime : 7/04/2006 23:22
' Author : Jean-Marc
' Purpose : Calcul de la moyenne générale de différentes classes
'---------------------------------------------------------------------------------------

' Toujours mettre Option explicit en tête de chaque forme
' ou module. Cela oblige à déclarer toutes les variables
' que le programme manipule, ce qui est une règle ABSOLUE.

Option Explicit

' Declaration des constantes: Ne jamais utiliser de valeurs numériques en dur dans le code,
' mais toujours préférer des constates nommées, définies en tête de module

Private Const C_NB_CLASSE As Integer = 4 ' nombre de classes
Private Const C_NB_MAT As Integer = 11 ' nombre maxi de matières
'

'---------------------------------------------------------------------------------------
' Procedure : cbcalculer_Click
' DateTime : 7/04/2006 23:11
' Author : Jean-Marc
' Purpose : Lance le calcul
'---------------------------------------------------------------------------------------
'
Private Sub cbcalculer_Click()
Dim tnotes(C_NB_MAT) As Double ' tableau de conversion des notes
Dim nbNotes As Integer ' nombre de notes, en fonction de la classe
Dim moyenne As Double ' la moyenne
Dim i As Integer

' conversion des textboxes des notes en valeur numériques de type double
For i = 0 To C_NB_MAT - 1
tnotes(i) = Val(tbNoteMat(i).Text)
Next i

' calcul de la note moyenne en fonction de la classe
If optclasse(0).Value = True Then ' classe de sixième, 9 matières
nbNotes = 9
ElseIf optclasse(1).Value = True Then ' classe de cinquième, 10 matières
nbNotes = 10
Else ' pour les autres classes, 11 matières
nbNotes = 11
End If

' Calcul de la moyenne
' a) calcul de la somme
For i = 0 To nbNotes - 1
moyenne = moyenne + tnotes(i)
Next i
' b) division par le nombre de notes
moyenne = moyenne / nbNotes

' détermination de la couleur d'affichage, en fonction de la valeur de la moyenne
If moyenne < 11 Then
lblreponse.ForeColor = &HFF ' entre 00 et 10, rouge
ElseIf moyenne < 14 Then
lblreponse.ForeColor = &H80FF& ' entre 11 et 13, orange
Else
lblreponse.ForeColor = &HFF00& ' entre 14 et 20, vert
End If

' Affichage du résultat
lblreponse.Visible = True
lblreponse.Caption = Round(moyenne, 1) & " / 20"

End Sub

'---------------------------------------------------------------------------------------
' Procedure : cbexit_Click
' DateTime : 7/04/2006 23:44
' Author : Jean-Marc
' Purpose : Bouton Quitter, on quitte le programme
'---------------------------------------------------------------------------------------
'
Private Sub cbexit_Click()
' on n'utilise jamais END, mais toujours unload me

Unload Me

End Sub

'---------------------------------------------------------------------------------------
' Procedure : cbreinitialiser_Click
' DateTime : 7/04/2006 23:43
' Author : Jean-Marc
' Purpose : Réinitialisation, efface les notes et le résultat
'---------------------------------------------------------------------------------------
'
Private Sub cbreinitialiser_Click()
Dim i As Integer

' remise à "" des text box
For i = 0 To C_NB_MAT - 1
tbNoteMat(i) = ""
Next i
' efface le résultat
lblreponse.Caption = ""

End Sub

'---------------------------------------------------------------------------------------
' Procedure : Form_Load
' DateTime : 7/04/2006 23:26
' Author : Jean-Marc
' Purpose : Initialisation de la forme
'---------------------------------------------------------------------------------------
'
Private Sub Form_Load()
Dim i As Integer

' Désactive les boutons radio
For i = 0 To C_NB_CLASSE - 1
optclasse(i).Value = False
Next i

' Cacher les labels des matières et les textboxs des notes
For i = 0 To C_NB_MAT - 1
lblMatiere(i).Visible = False
tbNoteMat(i).Visible = False
Next i

lblchoix.Visible = True ' afficher le label qui permet de choisir la classe
' cache la frame qui comporte le résultat et le bouton calculer
' inutile de cacher les controles de la frame
fra1.Visible = False

End Sub

'---------------------------------------------------------------------------------------
' Procedure : optclasse_Click
' DateTime : 8/04/2006 09:43
' Author : Jean-Marc
' Purpose : Affiche ou cache les labels en fonction de la classe
'---------------------------------------------------------------------------------------
'
Private Sub optclasse_Click(Index As Integer)
Dim i As Integer

ln1.Visible = False
ln2.Visible = False
lblchoix.Visible = False
fra1.Visible = True

' on affiche toujours les 9 premières
For i = 0 To 8
tbNoteMat(i).Visible = True
lblMatiere(i).Visible = True
Next i

Select Case Index
Case 0 ' sixieme
tbNoteMat(9).Visible = False
lblMatiere(9).Visible = False
tbNoteMat(10).Visible = False
lblMatiere(10).Visible = False
Case 1 ' cinquieme
tbNoteMat(9).Visible = True
lblMatiere(9).Visible = True
tbNoteMat(10).Visible = False
lblMatiere(10).Visible = False
Case Else
tbNoteMat(9).Visible = True
lblMatiere(9).Visible = True
tbNoteMat(10).Visible = True
lblMatiere(10).Visible = True
End Select

End Sub

'---------------------------------------------------------------------------------------
' Procedure : tbNoteMat_Change
' DateTime : 7/04/2006 23:29
' Author : Jean-Marc
' Purpose : Vérifie la validité des notes, qui doivent ëtre comprises entre 0 et 20
'---------------------------------------------------------------------------------------
'
Private Sub tbNoteMat_Change(Index As Integer)
Dim note As Double

note = Val(tbNoteMat(Index).Text) ' conversion du texte en double
If (note < 0) Or (note > 20) Then ' vérification
tbNoteMat(Index).Text = "" ' remise à zéro si valeur inacceptable
End If

End Sub

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.