Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…