Calcul de moyenne

0/5 (3 avis)

Snippet vu 33 309 fois - Téléchargée 31 fois

Contenu du snippet

Version modif de celle de wolfcyber qui ne fonctionnait pas. J'ai simplement rajouté une variable la somme des coefficients.

Source / Exemple :


Option Explicit

  
Dim varSaisie As Variant ' Variable de saisie
Dim varCoeff As Variant ' Coéfficient
Dim dblNombre As Double ' Le nombre de note
Dim dblMax As Double ' La note maximum
Dim dblMin As Double ' La note minimum
Dim dblMoyenne As Double ' La moyenne générale
Dim dblSommeCoeff As Double ' somme des coeff

  
Private Sub Form_Load()
  ' Initialisation des variables
  dblNombre = 0
  dblMoyenne = 0
  varSaisie = 0
  dblSommeCoeff = 0
  
  
   
  Do While varSaisie <> ""
    varSaisie = InputBox("Entrer une note (laisser vide pour arrêter le comptage) :", "Note N°" & dblNombre + 1)
     
    ' Verifie que le nombre se trouve bien entre 0 et 20
    If varSaisie >= 0 And varSaisie <= 20 Then
       
      ' Verifie si c'est la 1ere saisie ou pas
     If dblNombre = 0 Then
        ' Si oui, initialise les variables mini et maxi
        
        dblMax = varSaisie
        dblMin = varSaisie
   Else
        ' Si non :
        ' - Verifie si la note minimum est supérieur à la saisie
        If dblMin > varSaisie Then
          ' Si oui, modifie l'ancienne valeur minimum par la saisie
          dblMin = varSaisie
        End If
         
        ' - Verifie si la note maximum est inférieur à la saisie
        If dblMax < varSaisie Then
          ' Si oui, modifie l'ancienne valeur maximum par la saisie
          dblMax = varSaisie
       End If
      End If
     
      
      varCoeff = InputBox("Entrer le coefficient de la note N°" & dblNombre + 1, "Note N°" & dblNombre + 1, "1")
      
       
      ' Si le coeff est vide ou egal a 0,
      If varCoeff = "" Or varCoeff = "0" Then
        ' Alors affiche un message d'erreur
        MsgBox "Ce coéfficient est invalide !", vbExclamation, "Erreur"
      End If
       
      ' Incremente le nombre de note de 1
      dblNombre = dblNombre + 1
      ' Additionne la moyenne à la saisie
      dblMoyenne = dblMoyenne + (varSaisie * varCoeff)
      ' Additionne les coefficients
      dblSommeCoeff = dblSommeCoeff + varCoeff
      
    ' Si le nombre saisie n'est pas entre 0 et 20,
    Else
      ' et qu'il n'est pas vide (Ce qui signifirai l'arrêt du comptage),
      If varSaisie <> "" Then
        ' Alors affiche un message d'erreur
       MsgBox "Le chiffre doit être comprit entre 0 et 20", vbExclamation, "Erreur"
      End If
    End If
  Loop
   
  ' Si le nombre de note est superieur à 0
  If varCoeff > 0 Then
    ' Alors fait la moyenne
    dblMoyenne = dblMoyenne / dblSommeCoeff
     
  ' Sinon,
  Else
    ' La moyenne est egal à 0
    dblMoyenne = 0
  End If
   
  ' Affiche le resultat
  MsgBox "La moyenne est de : " & Round(dblMoyenne, 2) & "/20" & vbCrLf & _
    "La plus basse note est de : " & dblMin & vbCrLf & _
    "La plus haute note est de : " & dblMax & vbCrLf & _
    "Le nombre de note est de : " & dblNombre, vbInformation, "Résultat"
  ' Quitte le programme
  End
End Sub

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
27 octobre 2005

Merci codea, étant un novice je vais l'étudier pour la comprendre et l'appliquer ensuite
Messages postés
94
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
6 août 2006

oubli :

et pour finalement calculer ta moyenne, ton max et ton min :
Moyenne=CalculerMoyenne(TaTable)
Max=MiniMax(e_Max,Tatable)
Min=Min=MiniMax(e_Max,Tatable)
Messages postés
94
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
6 août 2006

tu devrais calculer l,écart type aussi ... c toujours pratique ;o) ...

ton code est très long... imagine que tu entre tes notes dans un tableau. Ce serait plus simple qu'avec un input box et la tu peux te faire une fonction CalculMoyenne.... elle te retourne la moyenne ...
ca te ferais un code comme ca :

function CalculMoyenne(Tableau() as single)
for i=0 to ubound(Tableau)'on parcours tout le tableau
CalculMoyenne=CalculMoyenne+Tableau(i)
Next i
'On fais +1 si tu utilise l'index 0 du tableau, moi je l'utilise
CalculMoyenne=CalculMoyenne/(Ubound(tableau)+1)
end function

Fonction MiniMax: A mettre dans un module ... le code je l'ai pris sur codes source une fois il est pas de moi et il fonctionne bien:
Public Enum eMaxMin
e_Max = 0
e_Min = 1
End Enum

Public Function MiniMax(Choix As eMaxMin, tdd() As Variant, Optional debut As Integer, Optional fin As Integer)
'Cette fonction retourne le minimum ou le Maximum d'une liste d'éléments
'select case
Dim boucle As Long, VarTmp As Variant, ODC As Integer

'INITIALISE LES PARAMETRES OPTIONELS
If fin <0 Then fin UBound(tdd)
If debut < 0 Then debut = 0

Select Case Choix
Case e_Max
ODC = 1
Case Else
ODC = -1
End Select
VarTmp = tdd(debut) ' Initialisation de la valeur max

' Parcours de l'ensemble des arguments
For boucle = debut To fin
' Comparaison de l'élément courant avec le MiniMax
If ((VarTmp * ODC) < (tdd(boucle) * ODC)) Then VarTmp = tdd(boucle)
Next boucle
' Retourne l'élément le plus grand ou le plus petit
MiniMax = VarTmp
End Function

Ensuite tu pourrais aller chercher les données comme ca, je donne l'exemple sans validation:
dim TaTable() as single
Redim TaTable(0) 'Initialisation
Do While varSaisie <> ""
Redim TaTable(Ubound(TaTable)+1)
Tatable(Ubound(TaTable)) = InputBox("Entrer une note (laisser vide pour arrêter le comptage) :", "Note
Loop

Espérant que ca puisse t'aider a t'améliorer ...
@++

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.