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

XL 2016 [VBA] Les boucles

shanon7

XLDnaute Junior
Bonjour,

Je débute en VBA et je tombe sur cet exercice entièrement rédigé dont je peine à comprendre une ligne :

La procédure suivante calcule la somme des n premiers entiers :
Sub SommeEntiers()
Dim somme As Integer
Dim compteur As Integer
Dim n As Integer
n = InputBox("Donner un entier :", "Saisie entier")
For compteur = 1 To n
somme = somme + compteur
Next compteur
Call MsgBox("Somme des " & n & " premiers entiers : " & somme)
End Sub

Je ne comprends pas bien la ligne que j'ai mise en gras. On dit que somme prend sa valeur + celle du compteur mais étant donné que l'on n'a jamais donné de valeur initiale à cette variable somme, je ne comprends pas comment le programme arrive à comprendre ce qu'il faut faire ?? Je ne sais pas si je suis claire, mais en tout cas j'ai vraiment du mal à comprendre cette ligne.

Merci à quiconque pourra bien me comprendre et m'éclairer lol

Shanon
 
Solution
Bonjour Shanon,
Le VBA est très permissif aux dires de beaucoup. Il permet pas mal de légèretés.
Par exemple vous n'êtes pas obliger de déclarer les variables, ou les déclarer sans les typer ....
Si vous n'initialisez pas vos variables elles prennent leurs valeurs par défaut 0 si le type est numérique, "" si elles sont de type texte ...
En toute rigueur, la bonne écriture eût été :
VB:
Dim somme As Integer
somme=0
Mais bon, ça simplifie tellement la vie !

shanon7

XLDnaute Junior
Est-ce qu'il ne faudrait pas écrire somme = 0 pour l'initialiser, juste avant d'écrire la boucle for ?
Ou bien est-ce que par défaut, la valeur d'une variable à laquelle aucune valeur n'est affectée est 0, donc inutile de le préciser ?
 

JM27

XLDnaute Barbatruc
bonjour
la solution est la
Dim somme As Integer

donc au lancement de la macro elle est égale à zéro par défaut
Cette variable est déclarée en integer ( entier jusqu'à 32767)
attention si une valeur n'est pas entière , ca va pas le faire( erreur dépassement de capacité)
Je l'aurais déclaré en double pour éviter ce pb
pour t'aider : sélectionnes integer et touche F1 pour l'aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Shanon,
Le VBA est très permissif aux dires de beaucoup. Il permet pas mal de légèretés.
Par exemple vous n'êtes pas obliger de déclarer les variables, ou les déclarer sans les typer ....
Si vous n'initialisez pas vos variables elles prennent leurs valeurs par défaut 0 si le type est numérique, "" si elles sont de type texte ...
En toute rigueur, la bonne écriture eût été :
VB:
Dim somme As Integer
somme=0
Mais bon, ça simplifie tellement la vie !
 

zebanx

XLDnaute Accro
Bonjour à tous,

@shanon
Ne pas hésiter à dérouler le code.
Taper successivement sur F8 dès le début du code et positionnez votre souris sur la valeur prise par une variable (comme "somme"). Quand on fait des boucles, ça reste utile.

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