[VBA] Déclaration de variable

Pour écrire et partager des tutoriels et des astuces avec les autres membres (Excel ou VBA uniquement)
Avatar du membre
Math
Membre dévoué
Membre dévoué
Messages : 736
Inscrit le : 5 décembre 2007
Version d'Excel : 2010 FR
Contact :

Message par Math » 31 mars 2009, 16:25

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
-
Mytå
Appréciation reçue : 1

Message par Mytå » 31 mars 2009, 23:22

Salut le forum

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

Mytå
Avatar du membre
Math
Membre dévoué
Membre dévoué
Messages : 736
Inscrit le : 5 décembre 2007
Version d'Excel : 2010 FR
Contact :

Message par Math » 1 avril 2009, 02:31

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
r
rmnr
Nouveau venu
Nouveau venu
Messages : 1
Inscrit le : 15 juin 2016
Version d'Excel : 2016

Message par rmnr » 15 juin 2016, 17:39

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.
Avatar du membre
Ausecour
Membre impliqué
Membre impliqué
Messages : 2'377
Appréciations reçues : 260
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 23 juillet 2018, 12:50

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 ;;)
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
G
Gli73
Membre fidèle
Membre fidèle
Messages : 185
Appréciations reçues : 28
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013

Message par Gli73 » 10 mai 2019, 22:10

Bonjour

Je reviens sur ce "vieux tuto" sue je n'avais jamais vu pour apporter une légère modification (disons précision) à
Math a écrit :
31 mars 2009, 16:25
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
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message