[VBA] Déclaration de variable

Bonjour à tous,

Je vois souvent des codes écrit en VBA avec des variables qui ne sont pas déclaré ou mal utilisé. Une variable pas déclaré va fonctionner pareil, avec un type variant par défaut, mais ce n’est pas une bonne façon de programmé et ça peut entrainer des erreurs. Voici donc une petite récapitulation sur les variables.

Type de données

Quand on déclare une variable, on doit lui assigné un type de donné. Si aucun type ne lui est assigné, la variable prend le type Variant, qui est un type fourre-tout. Si on ne sait pas quel type de données la variable va prendre ou si on veut qu’elle prenne plusieurs type, on est quand même mieux de lui déclaré le type Variant que de ne rien lui déclaré du tout. Voici les types de variables les plus utilisés

String Pour les données au formant texte.

Byte Entier compris entre 0 et 255

Integer Entier compris entre –32 768 et 32 767

Long Entier compris entre –2 147 483 648 et 2 147 483 647

Single Nombre à virgule flottante

Currency Type monétaire

Date Heure et date

Boolean Vrai ou Faux

Variant Tout type de données

Objet Objet Microsoft

Déclaration

Quand on nomme une variable, on doit respecter certaines règles.

  • Un nom de variable ne doit pas dépasser 255 caractères, mais le plus court est le mieux.
  • Éviter les mots réservés, et les caractères #,%,&,!,$, etc
  • Le nom ne doit pas avoir d’espace.
  • Éviter les accents é,à, etc…
Une façon claire de nommer une variable est de mettre la première lettre de chaque mot en majuscule et de coller tout les mots. J’utilise aussi un préfixe pour déterminer le type de la variable. ( strMonTexte pour une string, intResultat pour une Integer ). C’est pratique quand vous avez une long code avec beaucoup de variable.

Une variable est déclarée avec l’instruction Dim

Dim MonTexte as string

Après la déclaration, la variable est automatiquement initialisé : 0 pour une variable numérique, vide « » pour une variable string, false pour une boolean, et empty pour une variable variant. On peut déclarer plus d’un variable sur une ligne :

Dim MonTexte as string, MonNumero as Integer

Pour assigner une valeur à une variable objet il faut utiliser l’instruction Set

Dim MaSelection as Range
Set MaSelection = Range(“A1:A10”)

Pour libérer une variable objet, on utilise Nothing

Set MaSelection = Nothing

Il est important de libérer les variables objets car elle « mange » de la mémoire.

La porté des variables et leur durée de vie

Il y a trois niveau d’utilisation d’une variable : Public, Private ou Static

Déclaration au niveau procédure

Une variable déclarée dans une procédure est accessible uniquement dans cette procédure. On la déclare avec Dim ou Private. Lorsque la procédure se termine, la variable perd son contenue. Si on veut qu’elle conserve sa valeur, on utilise Static pour la déclarer. La valeur se perd quand même à la fermeture du classeur.

Déclaration au niveau Module

Elle est accessible dans toutes les procédures du module. On la déclare de la même façon qu’au niveau procédure. La variable doit être déclaré au début du module, en dehors de toutes procédures. Si on veut que la variable soit vu partout, on la déclare avec Public.

Déclarer une constante

Une constante est une variable qui ne changera jamais de valeur. Utile entre autre pour stocker un taux d’imposition. Elle est déclarer de la facon suivante.

Const sngTauxImpot as Single = 7.5

Salut le forum

Cette ficelle aurait bien pu être ajoutée en complément de Déclaration de variables (raccourci).

Mytå

11

t'as raison Myta, je me doutais que le sujet avait déjà du être traiter, mais je me disais que ça pourrais être utile au gens qui commence en VBA

Bonjour

Je suis débutant

Cela marche dans une méthode, mais je voudrais utiliser une constante reconnue par toutes les méthodes que j'écris.

La constante n'est pas reconnue même écrite en tête d'une "feuille de méthodes"

Je n'ai pas accès à la méthode main ou je ne sais pas y accéder.

Puisqu'on est sur le sujet de déclaration de variables, pour se forcer à déclarer toutes les variables pour être sûr qu'elles sont du type souhaité, il faut ajouter

Option Explicit

au code

Bonjour

Je reviens sur ce "vieux tuto" sue je n'avais jamais vu pour apporter une légère modification (disons précision) à

Déclarer une constante

Une constante est une variable qui ne changera jamais de valeur. Utile entre autre pour stocker un taux d’imposition. Elle est déclarer de la facon suivante.

Const sngTauxImpot as Single = 7.5

Une constante par définition n'est pas une variable !

De plus la syntaxe utilisée par Math correspond à une constante typée !

Une constante peut se déclarer plus simplement par :

Const sngTauxImpot = 7.5

Puisqu'elle est toujours "auto-typée" de manière intrinsèque

Ce que je confirme par contre c'est qu'une constante est une constante (ce n'est pas un Lapalissade)

Je veux dire qu'elle ne doit jamais, absolument jamais varier !

Il est par exemple une très mauvaise idée de déclarer des "numéro de colonnes" comme étant des constantes comme on le voit trop souvent... Lorsque que le tableau évoluera (et un tableau évoluera toujours) il faut alors ré-écrire toutes les constantes !

Une constante devrait être réservée à des indicateurs, des sémaphores pour la programmation, mais pas pour la gestion du classeur lui-même !

Autre précision :

Autant que faire ce peut : utilisez toujours des variables qui veulent dire quelque chose => pas de I, J, K

Rechercher des sujets similaires à "vba declaration variable"