Afficher la somme et la moyenne de "N" nombre saisie par l'utilisateur
Bonjour à tous, et à toutes,
Je suis nouveau sur ce forum et nouveau également dans la programmation vba.
Je sollicite votre aide car je peine à trouver une solution au problème suivant :
-faire la somme et la moyenne de "n" nombre saisie par l'utilisateur.
En gros j'avais commencé à écrire une série incrémenté comme suite :
Sub exo14()
Dim n As Integer, b As Integer
n = InputBox("combien de nombre souhaitez vous entrer?")
For i = 1 To n
b = InputBox("nombre " & i)
Next i
End SubCe code me permet en effet d'insérer une serire de nombre à partir d'un nombre d'entrée définie pas l'utilisateur lui même.
Mais je ne sais pas comment les exploiter pour faire des calculs de somme et de moyenne.
Merci de bien vouloir m'aider
Bonjour,
Pour le principe.
Cdlt.
Sub exo_14()
Dim n As Integer, b As Integer, x As Double, i As Integer
n = InputBox(prompt:="combien de nombre souhaitez vous entrer?")
For i = 1 To n
b = InputBox(prompt:="Saisissez le nombre")
x = x + b
Next i
MsgBox "Somme : " & x & Chr(10) & "Moyenne : " & x / n
End SubBonjour,
Pour le principe.
Cdlt.
Sub exo_14() Dim n As Integer, b As Integer, x As Double, i As Integer n = InputBox(prompt:="combien de nombre souhaitez vous entrer?") For i = 1 To n b = InputBox(prompt:="Saisissez le nombre") x = x + b Next i MsgBox "Somme : " & x & Chr(10) & "Moyenne : " & x / n End Sub
Merci beaucoup. ça marche super!
Merci pour le coup de pouce,
excuse moi de te solliciter une privée cette fois ci. Je souhaite maintenant afficher le maximum, le minum et la valeur strictement supéirieur à la moyenne.
j'essaie avec : application.max mais je n'y arrive pas. je crois que je ne comprend pas bien le fonctionnement de l'incrémentation.
merci
Re,
Je pense avoir loupé un truc dans ta demande de valeur strictement supérieur à la moyenne!...
Cdlt.
Sub exo_14()
Dim n As Integer, b As Integer, i As Integer
Dim xSum As Double
Dim xMin As Integer, xMax As Integer
n = InputBox(prompt:="combien de nombre souhaitez vous entrer?")
For i = 1 To n
b = InputBox(prompt:="Saisissez le nombre")
If i = 1 Then
xMin = b: xMax = b
Else
If b < xMin Then xMin = b
If b > xMax Then xMax = b
End If
xSum = xSum + b
Next i
MsgBox "Min : " & xMin & Chr(10) & "Moyenne : " & xSum / n & Chr(10) & "Max : " & xMax _
& Chr(10) & Chr(10) & "Somme : " & xSum
End SubMerci Jean-Eric.
En fait la dernière requète consiste en l'opération suivante :
si la moyenne est de 15, et qu'il y a 5 nombres dans la serie qui sont supérieur à 15, je veux code vba qui puisse m'afficher ce nombre "5"
Jean-Eric ton code marche super! vraiment merci.
Cela dit, peux tu m'expliquer la logique derrière ces lignes de code
If i = 1 Then
xMin = b: xMax = b
Else
If b < xMin Then xMin = b
If b > xMax Then xMax = b
End Ifmerci
Re,
Une nouvelle proposition à étudier.
Cdlt.
Public Sub exo_14_bis()
Dim n As Integer, b As Integer, i As Integer, k As Integer
Dim Arr() As Integer
Dim xAverage As Double, xCount As Double, xMax As Double, xMin As Double, xSum As Double
Dim Msg As String
n = InputBox(prompt:="combien de nombre souhaitez vous entrer?")
ReDim Arr(n - 1)
For i = LBound(Arr) To UBound(Arr)
b = InputBox(prompt:="Saisissez le nombre")
Arr(k) = b
k = k + 1
Next i
With Application
xMin = .Min(Arr)
xMax = .Max(Arr)
xSum = .Sum(Arr)
xAverage = .Average(Arr)
End With
For i = LBound(Arr) To UBound(Arr)
If Arr(i) > xAverage Then xCount = xCount + 1
Next i
Msg = "Min : " & xMin & Chr(10)
Msg = Msg & "Moyenne : " & xAverage & Chr(10)
Msg = Msg & "Max : " & xMax & Chr(10)
Msg = Msg & "Somme : " & xSum & Chr(10)
Msg = Msg & "NB valeurs > moyenne : " & xCount
MsgBox Msg, vbInformation, "Résultats"
Erase Arr
End SubRe,
J'ai apporté une petite modification.
Cdlt.
Option Explicit
Public Sub exo_14_bis()
Dim n As Integer, b As Integer, i As Integer
Dim Arr() As Integer
Dim xAverage As Double, xCount As Double, xMax As Double, xMin As Double, xSum As Double
Dim Msg As String
n = InputBox(prompt:="combien de nombre souhaitez vous entrer?")
ReDim Arr(n - 1)
For i = LBound(Arr) To UBound(Arr)
b = InputBox(prompt:="Saisissez le nombre")
Arr(i) = b
Next i
With Application
xMin = .Min(Arr)
xMax = .Max(Arr)
xSum = .Sum(Arr)
xAverage = .Average(Arr)
End With
For i = LBound(Arr) To UBound(Arr)
If Arr(i) > xAverage Then xCount = xCount + 1
Next i
Msg = "Min : " & xMin & Chr(10)
Msg = Msg & "Moyenne : " & xAverage & Chr(10)
Msg = Msg & "Max : " & xMax & Chr(10)
Msg = Msg & "Somme : " & xSum & Chr(10)
Msg = Msg & "NB valeurs > moyenne : " & xCount
MsgBox Msg, vbInformation, "Résultats"
Erase Arr
End SubSalut Jean Eric,
en m'inspirant de ton code, je me suis appliqué à le comprendre. sa m'a pris une bonne journée mais j'ai reussi à le reproduire en comprenant la logique.
merci merci
Sub table()
Dim tableau() As Integer
Dim n As Integer, i As Integer
Dim sum As Double, moy As Double, max As Double, min As Double, cunt As Double
Dim msg As String
n = InputBox("combien de nombre souhaitez vous entrer?")
If n > 100 Then
If MsgBox("vous devez entrer un nombre inférieur à 100", vbRetryCancel + vbInformation) = vbRetry Then
n = InputBox("combien de nombre souhaitez vous entrer?")
ReDim tableau(1 To n)
For i = 1 To n
tableau(i) = InputBox("entrer nombre " & i)
Next i
'formule
With Application
sum = .sum(tableau)
moy = .Average(tableau)
max = .max(tableau)
min = .min(tableau)
End With
For i = 1 To n
If tableau(i) > moy Then cunt = cunt + 1
Next i
'affichage des résultats
msg = "somme : " & sum & Chr(10)
msg = msg & "moyenne : " & moy & Chr(10)
msg = msg & "maximum : " & max & Chr(10)
msg = msg & "minimum : " & min & Chr(10)
msg = msg & "nb > moy : " & cunt & Chr(10)
MsgBox (msg)
End If
End If
End SubBonjour,
Merci à mon tour et bonnes fêtes de fin d'année.
Cdlt.