Re : Single et Integer
Bonjour
Et d'abord tous mes encouragements pour vous lancer dans l'apprentissage de VBA, c'est intéressant et amusant.
Il y a quelques notions de base à connaître avant de vous lancer dans le décortiquage d'un code.
Je vous invite à lire des pas à pas sur ce sujet ici
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
- Ce lien n'existe plus
La page sur les variables et leur déclaration vous intéressera plus particulièrement au vu de votre question.
Il faut savoir (mais ce n'est pas du tout recommandé) qu'on n'est pas obligé de déclarer les variables dans le VBA. Si on ne le fait pas, par défaut, excel leur donne le type variant qui comme son nom l'indique veut dire que la nature de la variable est ... variable.
A quoi ça sert alors ?
A deux choses en fait :
1) à minimiser la taille mémoire qu'excel attriue à chaque variable.
Si vous avez un test qui renvoie seulement vrai ou faux (une variable de type booleen), il n'y aura besoin de stocker que 1 ou 0. En revanche si votre variable est un texte, ou un tableau interne (array) qui peut contenir des milliers de données, il faut qu'excel réserve la place en mémoire pour pouvoiir traiter cette donnée.
Si vous savez que vous allez faire une boucle sur des nombres entiers positifs qui vont de 1 à 10, il n'est pas nécessaire de dire à excel de réserver la place pour écrire des nombres très élevés avec des virgules.
Déclarer les variables permet donc d'optimiser la mise en mémoire et donc la rapidité des codes. Mais attention, si vous dites
dim i as integer
et que dans le code vous écrivez
for i = 1,02 to 178e12
vous aurez une erreur (et ce n'est pas toujours évident au début de savoir pourquoi excel râle !)
si vous dites
i="mon texte" vous aurez aussi une erreur
et si dans votre procédure i peut aller au delà de 32767 vous aurez aussi une erreur (dépassement de capacité).
2) c'est un excellent moyen de ne pas avoir deux variables avec le même nom et d'être sur d'orthographier correctement vos variables
si je dis
Dim MonTexte as string (string c'est une chaine de caractère, que les esprits coquins s'en désolent ou pas
)
si dans ma macro j'écris
monstring (en minuscule), excel reconnait que c'est la variable que j'ai définie et modifie mon écriture ce qui me permet d'être sure d'avoir écrit correctement. Si l'écris mastring il ne se passera rien.