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 Sub

Ce 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 Sub

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 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 Sub

Merci 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 If

merci

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 Sub

Re,

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 Sub

Salut 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 Sub

Bonjour,

Merci à mon tour et bonnes fêtes de fin d'année.

Cdlt.

Rechercher des sujets similaires à "afficher somme moyenne nombre saisie utilisateur"