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
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 SubEdit : 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