Là si jmet 10 11 30 jobtiens pas une somme de 21 mais de 51 !
DONC je veux pas que la note >20 soit prise en compte !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDim moy As Double, som As Single, min As Integer, max As Integer, y As Integer, la_note_min As Single, la_note_max As Single som = 0 min = 0 max = 20 y = 0 la_note_min = 500 '(et pourquoi pas ?) la_note_max = -100 ' je veux dormir tranquille Do While Val(x) <= max x = InputBox("entrez les notes des éleves, terminez votre série de note par une valeur supérieure à 20") If Val(x) <= max And Val(x) >= min And IsNumeric(x) Then som = som + Val(x) y = y + 1 If Val(x) <la_note_min Then la_note_min Val(x) If Val(x) >la_note_max Then la_note_max Val(x) ElseIf Not IsNumeric(x) Then Else Exit Do End If Loop moy = som / y MsgBox "moyenne : " & moy & vbCrLf & "note mini : " & la_note_min & vbCrLf & "note maxi : " & la_note_max
ElseIf Not IsNumeric(Val(x)) Then
Sub Macro2() 'dimensionnement des variables Dim som As Single Dim y As Single Dim min As Single Dim max As Single Dim x As Single Dim moy As Single 'initialisation des variables moy = 0 som = 0 min = 20 max = 0 y = 0 'entr?e des donn'es Do While x <= 20 x = InputBox("entrez les notes des ?leves, terminez votre s?rie de note par une valeur sup?rieure ? 20") If x > 20 Then Exit Do End If If x < min Then min = x End If If x > max Then max = x End If som = som + x y = y + 1 moy = som / y Loop 'R?sultats MsgBox (" note minimum=" & min) MsgBox ("note maximum=" & max) MsgBox ("moyenne des notes=" & moy) MsgBox (" merci de m'avoir utilis? !") End Sub
Private Sub Command2_Click() Dim x As String, Numeronote As Integer, sep As String, som As Single, moy As Single Dim min As Single, max As Single Dim toto As voila sep = traitons("1.1").sep Do While toto.fini False Or toto.erreur True titre = "saisie des notes : Note N° " & Numeronote + 1 msg = " entrez cette note entre 0 et 20 inclus, s'il vous plait" & vbCrLf & "si décimale, utiliser " & sep & " comme séparateur décimal" & vbCrLf & _ "terminez votre série de notes par une valeur supérieure à 20" x = InputBox(msg, titre) toto = traitons(x) If toto.fini = True Then Exit Do If toto.erreur Then MsgBox "erreur de saisie ! " & vbCrLf & "non numérique ou note négative ou séparateur décimal (c'est " & sep & " qui est attendue) non adéquat" Else som = som + toto.valeur Numeronote = Numeronote + 1 If Numeronote 1 Then min toto.valeur: max = toto.valeur If toto.valeur < min Then min = toto.valeur If toto.valeur > max Then max = toto.valeur End If Loop If Numeronote = 0 Then MsgBox "aucune note n'a été valablement attribuée ===>> je quitte donc ici" Exit Sub Else moy = som / Numeronote MsgBox "j'ai donc ici " & Numeronote & " note(s) valablement saisie(s)" & vbCrLf & _ "la note minimum donnée est : " & min & vbCrLf & _ "la note maximum donnée est " & max & vbCrLf & _ "pour une moyenne générale de " & moy End If End Sub Private Function traitons(Q As String) As voila Static sep As String, erreur As Boolean If sep = "" Then If IsNumeric("0,1") Then sep = "une virgule" Else sep = "un point" End If traitons.sep = sep Exit Function End If If Not IsNumeric(Q) Or Val(Q) < 0 Then traitons.erreur = True: Exit Function Else traitons.erreur = False traitons.valeur = CDec(Q) End If If traitons.valeur > 20 Then traitons.fini = True End Function
Private Type voila fini As Boolean erreur As Boolean valeur As Single sep As String End Type
If Not IsNumeric(Q) Or Left(Q, 1) = "-" Then