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

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 le sous-procédures de Microsoft Excel dans Microsoft Visual Basic pour Applications.

Retour au début
Plus d'informations

Variables dans une procédure sub

Une fonctionnalité puissante des langages de programmation est la possibilité de stocker un élément dans une variable afin que le contenu de la variable puisse être utilisé ou puisse être modifié ultérieurement dans la procédure. Ce document aborde l'utilisation des variables suivante dans Visual Basic :
  • 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 au début

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 integer (2 octets pour x et y) et que les informations qui sont stockées dans des x ou de 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 comme 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

    par :
    x = "error"
  8. Exécutez la macro Variable_Test .
Vous recevrez une erreur d’exécution car « erreur » n’est pas un entier et que vous tentez d’attribuer cette valeur de chaîne à la variable entier x.

Retour au début

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 à 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 au début

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 du 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, d’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 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 la macro fonctionne toujours comme les variables x et y sont considérés comme des types de données Variant :
Dim x, y

Retour au début

Portée d’une variable

Lorsque vous déclarez une variable, elle peut ou peut ne pas être vu par d’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é au niveau du module et le niveau module public. La portée dépend de comment et où vous déclarez votre variable ou des variables.

Retour au début

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 au début

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 Public , 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 et 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 de votre projet.
  6. Dans ce module, tapez le code suivant :
    Sub Macro2()x = x * 3MsgBox xEnd Sub
  7. Dans le premier module, exécutez la macro Macro_1a .

    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 puis 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

    par :
    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 de 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 de 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

    par :
    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 pour le 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 au début

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 au début

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 au début

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) dans la mesure où ces autres macros sont également en cours d’exécution.

Pour illustrer les variables de niveau procédure comment 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 :
    x isstill 10
  7. Cliquez sur OK.
  8. Exécutez Macro1.
Vous recevez les mêmes messages décrits dans les étapes 3 à 6, car dès que Macro1 arrêté à 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 au début

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 le mot clé Static fonctionne, 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 que 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, comme 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 au début

Réinitialiser un projet pour réinitialiser les variables

Si vous souhaitez réinitialiser la valeur d'une variable statique ou d'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 et 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 secondaires d’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.

מאפיינים:

מזהה פריט: 843144 - סקירה אחרונה: 08/27/2016 23:15:00 - תיקון: 5.0

Microsoft Office Excel 2007, Microsoft Excel 2002, Microsoft Excel 2000 Standard, Microsoft Excel 97 Standard

  • kbvba kbprogramming kbinfo kbmt KB843144 KbMtfr
משוב