Serie de nombre

bonjour à tous

voila j'essaye de créer une formule sous vba de telle sorte qu'une personne puisse entre une série de nombre jusqu'à ce qu'il écrive zéro et à ce moment la il y a un message qui s'affiche avec le nombre de nombre entier entrés, la somme de ces nombre et la valeur du plus grand nombre

je pensais faire une fonction "do" "lump until" mais je ne vois pas trop quoi marquer dedans

merci d'avance

cordialement

-- Mer Fév 17, 2010 1:40 pm --

a ce que je vois personne n'a d'idée

Bonjour

a ce que je vois personne n'a d'idée

Pas d'affolement. Tout le monde n'est pas assigné au clavier 24h/24. Et, en plus, c'est l'heure du repas.

Un peu de patience et tu verras bien..

Cordialement

capture d ecran 741

désolé

la patience et moi sa fait deux

Bonjour gege37, amadéus, forum,

Quelque chose comme ça ?

Sub zero()
Dim nombre, cpt As Integer, i As Integer
Dim som As Single, tablo() As Single, valMax As Single
    ReDim tablo(1 To 1000)
    nombre = 1
    Do While nombre <> 0
        nombre = InputBox("entrer un nombre")
        If Not IsNumeric(nombre) Then
            MsgBox "Veuillez entrer un nombre", vbExclamation
        Else
            If nombre <> 0 Then
                cpt = cpt + 1
                som = som + nombre
                tablo(cpt) = nombre
            End If
        End If
    Loop
    ReDim Preserve tablo(1 To cpt)
    valMax = tablo(1)
    For i = 1 To cpt
        If tablo(i) > valMax Then valMax = tablo(i)
    Next i
    MsgBox "Vous avez entré " & cpt & " valeur(s) avant d'atteindre 0." & vbNewLine & _
           "La somme de ces valeurs est de " & som & "." & vbNewLine & _
           "La plus grande valeur est " & valMax & ".", vbInformation
End Sub

Edit : j'ai oublié le reste de la demande ! Je reviens !

Edit2 : code modifié !

sa marche nikel mais il y a plusieurs choses que je ne comprends pas :

==>"ReDim tablo(1 To 1000)

nombre = 1"

==>"cpt = cpt + 1

som = som + nombre

tablo(cpt) = nombre"

==>"ReDim Preserve tablo(1 To cpt)

valMax = tablo(1)

For i = 1 To cpt

If tablo(i) > valMax Then valMax = tablo(i)

Next i"

Re,

En fait, j'utilise une variable tableau (tablo) qui va stocker tous les nombres que tu entres pour pouvoir trouver le maximum.

Le ReDim tablo(1 To 1000) c'est pour redimensionner le tableau pour qu'il puisse contenir 1000 valeurs (c'est au cas où tu rentres 1000 valeurs). Cette valeur peut être changée par une plus petite si tu penses que tu ne vas pas entrer plus de valeurs que ce nombre.

- Le nombre = 1 c'est juste pour initialiser la variable "nombre" pour que le test "Do While nombre <> 0" puisse commencer.

- Le cpt (=compteur) dans cpt = cpt + 1 permet d'incrémenter de 1 ce compteur à chaque fois qu'un nombre est entré.

- le som = som + nombre c'est pour calculer la somme des nombres entrés à chaque pas.

- Le tablo(cpt) = nombre c'est pour stocker chaque nombre entré dans une variable tableau en vue de la recherche du maximum.

- Le ReDim Preserve tablo(1 To cpt) c'est pour redimensionner le tableau pour qu'il ait une taille égale au nombre de valeur entrée. Ça prend également moins de mémoire.

- valMax = tablo(1) sert d'initialisation pour la recherche du maximum. Maximum que l'on cherche par comparaison de toutes les valeurs du tableau avec le code suivant :

For i = 1 To cpt

If tablo(i) > valMax Then valMax = tablo(i)

Next i"

Si jamais aucun nombre est entré avant le 0, utilise plutôt ce code là (mais bon c'est au cas où) :

Sub zero()
Dim nombre, cpt As Integer, i As Integer
Dim som As Single, tablo() As Single, valMax As Single
    ReDim tablo(1 To 1000)
    nombre = 1
    Do While nombre <> 0
        nombre = InputBox("entrer un nombre")
        If Not IsNumeric(nombre) Then
            MsgBox "Veuillez entrer un nombre", vbExclamation
        Else
            If nombre <> 0 Then
                cpt = cpt + 1
                som = som + nombre
                tablo(cpt) = nombre
            End If
        End If
    Loop
    If cpt <> 0 Then
        ReDim Preserve tablo(1 To cpt)
        valMax = tablo(1)
        For i = 1 To cpt
            If tablo(i) > valMax Then valMax = tablo(i)
        Next i
        MsgBox "Vous avez entré " & cpt & " valeur(s) avant d'atteindre 0." & vbNewLine & _
               "La somme de ces valeurs est de " & som & "." & vbNewLine & _
               "La plus grande valeur est " & valMax & ".", vbInformation
    Else
        MsgBox "Aucune valeur entrée avant le 0.", vbInformation
    End If
End Sub
Rechercher des sujets similaires à "serie nombre"