Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Votre navigateur n’est pas pris en charge

Vous devez mettre à jour votre navigateur pour utiliser le site.

Mettre à jour vers la dernière version d’Internet Explorer

Comment faire pour utiliser des variables dans les procédures sous Excel dans Visual Basic pour Applications

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 843144
INTRODUCTION
Cet article décrit comment utiliser des variables dans les procédures sous Microsoft Excel dans Microsoft Visual Basic pour Applications.

retour en haut
Plus d'informations

Variables dans une procédure sub

Une fonctionnalité puissante de langages de programmation est la possibilité de stocker un élément dans une variable afin que le contenu de la variable peut être utilisé ou peut être modifié ultérieurement dans la procédure. Ce document aborde l'utilisation des variables dans Visual Basic suivante :
  • Manière dont les variables sont déclarées.
  • Les procédures et les projets que vous peuvent utiliser thevariable.
  • La durée de vie d'une variable.
retour en haut

Déclarez une variable dans une macro

Pour déclarer une variable dans une macro, le plus simple consiste à utiliser l'instruction Dim . La ligne suivante déclare deux variables, x et y, en tant qu'entiers :
Dim x As Integer, y As Integer
Avec x et y spécifiée sous forme d'entiers, vous demandez à Visual Basic de réserver suffisamment de mémoire pour une variable de type integer (2 octets pour x et y) et que les informations qui sont stockées dans x ou y sont un nombre entier compris entre -32768 et 32767.

Remarque : Si vous déclarez plusieurs variables à l'aide d'une seule instruction Dim , vous devez spécifier le type de données pour chaque variable.

Si vous ne spécifiez pas le type de données pour chaque variable, comme dans le code Visual Basic suivant, la variable y est configurée sous la forme d'une variable de type entier. La variable x est de type variant :
Dim x, y As Integer
Pour plus d'informations, consultez la section « Type de données Variant ».

Pour effectuer un test de variable, procédez comme suit :
  1. Enregistrez et fermez les classeurs ouverts et ouvrez un newworkbook.
  2. Démarrer Visual Basic Editor (appuyez sur ALT + F11).
  3. Dans le menu Insertion , cliquez surModule.
  4. Tapez le code suivant :
    Sub Variable_Test()Dim x As Integer, y As Integerx = 10y = 100MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd Sub
  5. Exécutez la macro Variable_Test . Le message suivant s'affiche :
    la valeur de x est de 10
    la valeur de y est de 100
  6. Cliquez sur OK.
  7. Dans la macro Variable_Test , modifiez la ligne suivante :
    x = 10

    pour :
    x = "error"
  8. Exécutez la macro Variable_Test .
Vous recevrez une erreur au moment de l'exécution parce que « erreur » n'est pas un entier et que vous essayez d'affecter cette valeur de chaîne à la variable entier x.

retour en haut

Résumé des types de données

Le tableau suivant répertorie les types de données de la variable courants :

Type de donnéesTaille de stockagePlage autorisée
Valeur booléenne 2 octets Valeur True ou False
Nombre entier 2 octets -32 768 et 32 767
Long 4 octets -2 147 483 648 à 2 147 483 647
Double 8 octets -1, 79769313486232E308 à - 4, 94065645841247E-324 pour les valeurs négatives ; 4, 94065645841247E-324 et 1, 79769313486232E308 pour les valeurs positives
Devise 8 octets -922,337,203,685,477.5808 à 922,337,203,685,477.5807
Date 8 octets 1 Janvier 100 et le 31 décembre 9999
Chaîne 10 octets + longueur de la chaîne

retour en haut

Type de données Variant

Si vous ne spécifiez pas un type de données lorsque vous déclarez une variable, ou vous ne déclarez pas de variable à tout, Visual Basic définit automatiquement le type de données variant pour cette variable. Les avantages des variables qui sont déclarées dans ce type de données sont les suivantes :
  • Peuvent contenir des variables chaîne, de date, d'heure, les valeurs booléennes, ornumeric.
  • Les variables peuvent convertir les valeurs qu'ils containautomatically.
L'inconvénient est que les variables de type variant nécessitent au moins 16 octets de mémoire. 16 octets de mémoire peut être importantes dans les grandes procédures ou dans les modules complexes.

Pour voir comment cela fonctionne dans la macro Variable_Test , procédez comme suit :
  1. Modifiez le code dans la macro Variable_Test pour :
    Sub Variable_Test()Dim x, yx = "string"y = 1.23MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd Sub
  2. Exécutez la macro Variable_Test .
Vous ne recevrez pas une erreur, car vous pouvez assigner quoi que ce soit pour les variables de type variant x et y.

Remarque : Vous pouvez également laisser la ligne suivante et continuera de fonctionner la macro en tant que variables x et y sont considérés comme des types de données Variant :
Dim x, y

retour en haut

Portée d'une variable

Lorsque vous déclarez une variable, elle peut ou peut ne pas être vu par les autres macros dans le même module, dans d'autres modules ou dans d'autres projets. Cette disponibilité d'une variable dans les modules est appelée étendue. Les trois types d'étendue sont au niveau de la procédure, privé de niveau module et le niveau module public. La portée dépend de comment et où vous déclarez votre variable ou des variables.

retour en haut

Portée niveau-procédure

Une variable avec une portée de niveau procédure n'est pas visible à l'extérieur de la procédure dans laquelle elle est déclarée. Si vous définissez la valeur d'une variable qui a une portée de niveau procédure, contenu de cette variable n'apparaîtront pas à d'autres macros.

Pour vérifier qu'une variable avec une portée de niveau procédure n'est pas visible à l'extérieur de la procédure dans laquelle elle est déclarée, procédez comme suit :
  1. Insérez un nouveau module dans votre projet.
  2. Dans ce module, tapez les deux macros suivantes :
    Sub Macro1()Dim x As Integerx = 10MsgBox "x, as seen by Macro1 is " & x'the next line runs Macro2Macro2End SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd Sub
  3. Exécutez Macro1.

    Le message suivant s'affiche :
    x, tel que perçu par Macro1 est de 10
  4. Cliquez sur OK.

    Vous recevez le message de réticules du centre :
    x, tel que perçu par Macro2is
  5. Cliquez sur OK.
Nom macro2 n'affiche pas une valeur pour la variable x, car la variable x est locale à Macro1.

retour en haut

Portée de niveau module privée et public

Vous pouvez définir des variables dans la section Déclarations d'un module (en haut d'un module, et surtout des procédures sub) et définir la portée de la variable à l'aide de l'instruction publique , l'instruction Dim ou l'instruction Private . Si vous placez l'instruction Public devant votre variable, la variable sera disponible pour toutes les macros dans tous les modules dans le projet. Si vous placez l'instruction Dim ou l'instruction Private devant votre variable, la variable est disponible uniquement pour les macros dans le module dans lequel elle est déclarée.

Pour voir la différence entre l'instruction Public et de l'instruction Dim , procédez comme suit :
  1. Enregistrez et fermez les classeurs ouverts, puis ouvrez un newworkbook.
  2. Démarrez l'éditeur Visual Basic.
  3. Insérez un module de votre projet.
  4. Dans ce module, tapez le code suivant :
    Public x As IntegerSub Macro_1a()x = 10MsgBox xMacro_1bEnd SubSub Macro_1b()x = x * 2MsgBox xMacro2End Sub
  5. Insérez un autre module dans votre projet.
  6. Dans ce module, tapez le code suivant :
    Sub Macro2()x = x * 3MsgBox xEnd Sub
  7. Exécutez la macro Macro_1a dans le premier module.

    La variable x declaredas « Public x As Integer », tous les trois macros dans le projet disposent accéder à modifiez la valeur de x. La première boîte de message affiche une valeur de 10. Le deuxième messagebox affiche une valeur de 20 (car x est multipliée par 2 dans Macro_1b). Le troisième message affiche la valeur 60 (dans la mesure où la valeur x a été modifiée en 20 dans Macro_1b et ensuite qu'il a été multiplié par 3 dans Macro2).
  8. Modifier la ligne de déclaration dans le premier module à partir de :
    Public x As Integer

    pour :
    Dim x As Integer
  9. Exécutez la macro Macro_1a .

    Avec la variable x déclaré « Dim x AsInteger », seuls les macros dans le premier module d'accéder à la valeur de x. Sothe première boîte de message affiche une valeur de 10, la deuxième boîte de message affiche la valeur de 20, (car x est multipliée par 2 dans Macro_1b) et le troisième message affiche la valeur 0 (car le nom Macro2 ne voit pas la valeur de x et la valeur non initialisée de zerois utilisé par Macro 2).
  10. Modifier la ligne de déclaration dans le premier module à partir de :
    Dim x As Integer

    pour :
    Private x As Integer
  11. Exécutez la macro Macro_1a .
Les mêmes boîtes de message sont affichés à l'aide de la portée de l'instruction Private comme ils ont été à l'aide de l'instruction Dim . La variable x a la même portée, privé pour le module dans lequel elle est déclarée.

Remarque : Si vous souhaitez que l'étendue de votre variable limitée au module dans lequel elle est déclarée, utilisez l'instruction Private au lieu de l'instruction Dim . Ils sont tous deux obtenir le même effet, mais la portée est plus claire lorsque vous lisez le code si vous utilisez l'instruction Private .

retour en haut

Durée de vie d'une variable

La durée pendant laquelle une variable conserve sa valeur est connue en tant que sa durée de vie. La valeur d'une variable peut changer pendant sa durée de vie mais elle conserve une valeur. En outre, lorsqu'une variable perd sa portée, elle n'a plus une valeur.

retour en haut

Initialiser la valeur d'une variable

Lorsque vous exécutez une macro, toutes les variables sont initialisées à une valeur. Une variable numérique est initialisée à zéro, une chaîne de longueur variable est initialisée à une chaîne de longueur nulle (""), et une chaîne de longueur fixe est remplie avec le code ASCII 0. Les variables Variant sont initialisées à vide. Une variable Empty est représentée par un zéro dans un contexte numérique et une chaîne de longueur nulle ("") dans un contexte de chaîne.

retour en haut

Variables de niveau procédure

Si vous avez une variable qui est déclarée dans une macro à l'aide de l'instruction Dim , la variable conserve sa valeur tant que la macro s'exécute. Si cette macro appelle d'autres macros, la valeur de la variable est conservée (non disponible pour les autres macros que) tant que ces autres macros sont également en cours d'exécution.

Pour montrer comment variables de procédure fonctionne, procédez comme suit :
  1. Insérez un nouveau module dans votre projet.
  2. Dans ce module, tapez les deux macros suivantes :
    Sub Macro1()'set x as a procedure level variableDim x As Integer   MsgBox "the initialized value of x is " & xx = 10MsgBox "x is " & x'the next line runs Macro2Macro2MsgBox "x is still " & xEnd SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd Sub
  3. Exécutez Macro1.

    Le message suivant s'affiche :
    la valeur initialisée de x est égal à 0
  4. Cliquez sur OK.

    Vous recevez le message de réticules du centre :
    x est de 10
  5. Cliquez sur OK.

    Vous recevez le message de réticules du centre :
    x, comme indiqué par le nom Macro2 est
  6. Cliquez sur OK.

    Nom macro2 n'affiche pas une valeur pour la variable x, car le variablex est local à Macro1. Le message suivant s'affiche :
    isstill x 10
  7. Cliquez sur OK.
  8. Exécutez Macro1.
Vous recevez les mêmes messages sont décrites dans les étapes 3 à 6, car dès que Macro1 arrêté en cours d'exécution à l'étape 6, la valeur de la variable x a été perdue. Par conséquent, lorsque vous exécutez de nouveau Macro1 à l'étape 7, le premier message affiche la valeur de x comme zéro (la valeur initialisée).

retour en haut

Mot clé static

Si une variable de niveau procédure est déclarée à l'aide du mot clé Static, la variable conserve sa valeur jusqu'à ce que votre projet soit réinitialisé. Par conséquent, si vous avez une variable statique, la prochaine fois que vous appelez la procédure, la variable statique est initialisée à sa dernière valeur.

Pour voir comment fonctionne le mot clé Static, procédez comme suit :
  1. Modifiez le code dans Macro1 à :
    Sub Macro1()'set x as a procedure level variableStatic x As Integer   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd Sub
  2. Exécutez Macro1.

    Le message suivant s'affiche :
    la valeur initialisée de x est égal à 0
  3. Cliquez sur OK.

    Vous recevez le message de réticules du centre :
    x est de 10
  4. Cliquez sur OK.
  5. Exécutez Macro1.

    Le message suivant s'affiche :
    la valeur initialisée de x est de 10
  6. Cliquez sur OK.

    Vous recevez le message de réticules du centre :
    x est de 20
  7. Cliquez sur OK.
Les valeurs qui apparaissent dans les messages sont différents la deuxième fois car la variable x est déclarée comme une variable statique et la variable conserve sa valeur après l'exécution de Macro1 la première fois.

Remarque : Si vous avez une variable de niveau module, sa durée de vie est le même que s'il s'agissait d'une variable de niveau procédure statique.

Pour vérifier la durée de vie d'une variable de niveau module, procédez comme suit :
  1. Modifiez le code dans le module qui contient le nom Macro1 à ce qui suit :
    Dim x As Integer  'create a module-level variableSub Macro1()   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd Sub
  2. Exécutez Macro1.

    Le message suivant s'affiche :
    la valeur initialisée de x est égal à 0
  3. Cliquez sur OK.

    Vous recevez le message de réticules du centre :
    x est de 10
  4. Cliquez sur OK.
  5. Exécutez Macro1.

    Le message suivant s'affiche :
    la valeur initialisée de x est de 10
  6. Cliquez sur OK.

    Vous recevez le message de réticules du centre :
    x est de 20
  7. Cliquez sur OK.
Les valeurs qui apparaissent dans les messages sont différents la deuxième fois car la variable x est déclarée comme une variable statique et elle conserve sa valeur après l'exécution de Macro1 la première fois.

retour en haut

Réinitialiser un projet pour réinitialiser les variables

Si vous souhaitez réinitialiser la valeur d'une variable statique ou à une variable de niveau module, cliquez sur le bouton Réinitialiser la barre d'outils Standard , ou cliquez sur Réinitialiser dans le menu exécuter .

Si vous effectuez cette opération pour le projet Macro1 , puis réexécutez Macro1, la valeur de la variable x est initialisée à zéro et le premier message :
la valeur initialisée de x est égal à 0
Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
843145 Description des procédures sous Excel dans Visual Basic pour Applications (tableaux)
Sub procédures VBA variables var xl2007 xl2003 xl2000 xl2002 xl

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 843144 - Dernière mise à jour : 09/03/2013 07:34:00 - Révision : 4.0

  • Microsoft Office Excel 2007
  • Microsoft Excel 2002
  • Microsoft Excel 2000 Standard
  • Microsoft Excel 97 Standard
  • kbvba kbprogramming kbinfo kbmt KB843144 KbMtfr
Commentaires
0&did=1&t=">mp;did=1&t=">.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> ascript' src='" + (window.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");