Microsoft 365 VBA somme des 100 premiers entiers

Magicdog36

XLDnaute Nouveau
Bonjour,

On me demande : Créez une macro qui affiche la somme des 100 premiers entiers.

J'ai fait :

Sub ex10 ()
N = 100
x = N * (N + 1) / 2
MsgBox x
End Sub


La macro fonctionne mais mon prof me demande de calculer la somme avec une boucle plutôt qu'avec la formule n(n+1)/2. Je n'y arrive pas...
 

TooFatBoy

XLDnaute Barbatruc
Si tu es es sûr que les trois sont des boucles, ça te fait trois possibilités.
Mais en réalité, il y en a un des trois qui n'est pas vraiment une boucle mais plutôt un simple test. Ne crois-tu pas ? ;)

Commence avec un FOR, c'est la plus simple.
 

Magicdog36

XLDnaute Nouveau
Marcel j'ai réussi à faire la boucle !!
N = 100
Cells(1, 1) = 1
For i = 2 To N
Cells(i, 1) = i + Cells(i - 1, 1)
Next
MsgBox Cells(N, 1)

Mais maintenant je n'arrive pas à la lancer sans l'affecter aux cellules. Je voudrais juste avoir mon msgbox.
Il faudrait que je change les Cells par des variables mais je n'y arrive pas :(
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Il vaut mieux ne pas utiliser comme zone de stockage intermédiaire une ou plusieurs cellules. Écrire via une feuille de calcul, c'est très long. On peut utiliser une variable intermédiaire et l'afficher à la fin, ce qui est bien plus rapide.

VB:
Option Explicit

Sub Sommer()
Dim n As Long, Som As Currency, i As Long
   Do While Not n >= 1
      n = Int(Application.InputBox("Saisir un entier >= à 1 svp ?", Type:=1))
   Loop
   For i = 1 To n: Som = Som + i: Next i
   MsgBox "La somme des entiers de 1 à " & Format(n, "#,##0") & " est :    " & Format(Som, "#,##0")
End Sub

nota: le type Currency permet de manipuler des nombres (notamment des entiers) plus grands que le type long (si vous saisissez la borne n=100000, avec le type Long on aboutit à une erreur, avec le type currency ça passe)
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
j'ai fait ça comme macro du coup.

Sub ex10()
N = 100
For i = 1 To N
j = j + i
Next
MsgBox j
End Sub
Bravo, c'est excellent ! ;)

Tu n'es pas obligé d'utiliser une variable pour déterminer la borne haute de ton For.
Tu peux directement écrire la valeur.
Ça donnerait donc ça :
VB:
Sub ex10()
j = 0
For i = 1 To 100
    j = j + i
Next
MsgBox j
End Sub
 

Statistiques des forums

Discussions
312 164
Messages
2 085 867
Membres
103 007
dernier inscrit
salma_hayek