VBA somme de nombre, afficher résultat tous les X pas

Je dois écrire une sous procédure sur VBA pour calculer la somme des nombres entiers allant de 1 à 10 000 et afficher la somme dans la fenêtre immédiate sur VBA tous les 1000 pas.

capture d ecran 2022 10 13 a 23 33 26

Actuellement j'ai réalisé ceci sauf que cela n'affiche que le résultat final de la somme soit 5050, comment dois-je faire pour que le résultat s'affiche tous les 1000 pas et non pas uniquement le résultat final ?

Merci d'avance,

Bonjour,
Une proposition.
Cdlt.

Option Explicit

Public Sub ForNextDemo1()
Dim n As Long, dSum As Double
    For n = 1 To 10000
        dSum = dSum + n
        'If n Mod 1000 = 0 Then Debug.Print n & " - " & dSum
        If XLMod(n, 1000) = 0 Then Debug.Print n & " - " & dSum
    Next n
End Sub
'Copie exacte de la fonction Mod d'Excel.
Private Function XLMod(n, d)
    XLMod = n - d * Int(n / d)
End Function

@Jean_Eric,

If XLMod(n, 1000) = 0 then ... OU if n mod 1000 = 0 then ... , c'est la même chose ou est-ce qu'il y a quelque choste que je ne vois pas ?

Bonjour,
@BsAlv,
Dans cas, c'est la même chose (2 entiers).
J'avais pris l'habitude d'utiliser la fonction personnalisée XLMod pour m'assurer que le résultat soit conforme à la fonction Mod d'Excel.
En VBA, Mod est un opérateur qui renvoie toujours un entier (arrondi).
Cdlt.

bonjour,

@Jean-Eric, je n'avais pas pensé aux variables doubles, dans ce cas, c'est okay.

Bonjour,

J'ai l'impression que la sub ne fonctionne pas ce n'est pas le résultat que je devrais avoir qui devrais apparaître quelqu'un sait pourquoi ?

Merci d'avance

bonjour,

Et quel résultat devrez-vous voir ? Peut-être la somme de 0-1000, 1001-2000, 2001-3000, etc,

Alors ajoutez dSum=0 après ce "if ... then

   If XLMod(n, 1000) = 0 Then Debug.Print n & " - " & dSum:dSum=0

Oui je dois voir la somme de 0 à 1000, puis de 1000 à 2000 et le résultat final.

Actuellement cela ne fonctionne pas, ça m'affiche ceci. Que faire ?

capture d ecran 2022 10 17 a 21 25 46

bonjour,

il manque quoi, la somme est correcte, non ? C'est la présentation ? Vous voulez aussi un msgbox ?

Public Sub ForNextDemo1()
     Dim n As Long, dSum As Double
     For n = 1 To 10000
          dSum = dSum + n
          If n Mod 1000 = 0 Then
Debug.Print "la somme de " & Format(n - 999, "#,###") & " à " & Format(n, "#,###") & " est  " & Format(dSum, "#,###")
msgbox "la somme de " & Format(n - 999, "#,###") & " à " & Format(n, "#,###") & " est  " & Format(dSum, "#,###")
               dSum = 0
          End If
     Next n
End Sub
image
capture d ecran 2022 10 18 a 12 47 23

Lorsque j'exécute la sub il y a ça qui s'affiche et je n'ai pas toutes les sommes qui s'affichent d'un coup. Comment faire pour régler ce problème ?

19mattbreaker.xlsb (19.92 Ko)

Fichier de 0 à 10.000.000 sans problème chez moi.

C'était la ligne de "Debug_print ..." qui causait l'erreur ?

Comment est-ce possible que vous avez ce "_" comme séparateur pour les milliers ? 1_000 et 500_500

capture d ecran 2022 10 18 a 15 21 34

Avec la sub que vous m'avez envoyé voici ce qui s'affiche. Je n'arrive pas à avoir ceci :

capture d ecran 2022 10 18 a 15 22 50

bonjour,

je ne sais pas ce qu'il se passe, ce sont vos "settings" de Windows ou d'Excel

Quelqu'un aurait une autre solution ?

Je n'ai toujours pas réussit à résoudre le problème, je pense qu'il est correct d'afficher uniquement le résultat de la somme sans que ça affiche la somme de 1 à 1000 est .... etc...

alors, c'est "Debug.print n"

J'ai toujours l'erreur d'exécution 6 qui s'affiche "dépassement de capacité", j'arrive pas à comprendre pourquoi

bonjour,

vous ne pouvez pas ajouter votre fichier ici pour voir quelle différence il y a ? Utilisez cet icon du ruban

image
Rechercher des sujets similaires à "vba somme nombre afficher resultat tous pas"