Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Introduction

Cet article explique comment utiliser des variables dans Microsoft Excel-procédures dans Microsoft Visual Basic pour Applications.

Informations supplémentaires

Variables dans une sous-procédure

Une fonctionnalité puissante des langages de programmation est la possibilité de stocker un élément dans une variable afin que son contenu puisse être utilisé ou modifié plus tard au cours de la procédure. Ce document traite de l’utilisation suivante des variables dans Visual Basic :

  • Comment les variables sont déclarées.

  • Procédures et projets qui peuvent utiliser la variable.

  • Durée de vie d’une variable.

Déclarer une variable dans une macro

Le moyen le plus simple de déclarer une variable dans une macro consiste à utiliser l’instruction Dim. La ligne suivante déclare deux variables, sous la mesure d’être des nombres finaux :

    Dim x As Integer, y As Integer

Avec x et y spécifiés comme entiers, vous indiquez à Visual Basic de mettre de côté suffisamment de mémoire pour une variable entière (2 octets chacune pour x et y) et que les informations stockées dans x ou y sont un nombre entier 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 de chaque variable.

Si vous ne spécifiez pas le type de données de chaque variable, comme dans l’Visual Basic code de la variable suivante, seule la variable y est définie comme variable d’ensemble. La variable x sera d’un type variant :

    Dim x, y As Integer

Pour plus d’informations, voir le type de données Variant ci-dessous.
 

Pour effectuer un test de variable, suivez les étapes suivantes :

  1. Enregistrez et fermez les livres ouverts, puis ouvrez un nouveau.

  2. Démarrer l’Visual Basic des éditeurs (appuyez sur Alt+F11).

  3. Dans le menu Insertion, cliquez sur Module.

  4. Tapez le code suivant :

    Sub Variable_Test()
        Dim x As Integer, y As Integer
        x = 10
        y = 100
        Boîte de réception « la valeur de x est » & x & _
        Chr(13) & « la valeur de y est " & y
    End Sub

  5. Exécutez la Variable_Test macro. Vous recevez le message suivant :

    the value of x is 10
    the value of y is 100

  6. Cliquez sur OK.

  7. Dans la Variable_Test macro, modifiez la ligne suivante

    :x = 10

  8. pour :

    x = "error"

  9. Exécutez la Variable_Test macro.

Vous recevrez une erreur d’exécuter car « erreur » n’est pas un ensemble, et vous essayez d’attribuer cette valeur de chaîne à la variable d’ensemble x.
 

Résumé du type de données

Voici les types de données variables courants :

types de données variables courants

type de données Variant

Si vous ne spécifiez pas de type de données lorsque vous déclarez une variable, ou si vous ne déclarez aucune variable, Visual Basic spécifie automatiquement le type de données variant pour cette variable. Voici les avantages des variables déclarées comme type de données :

  • Les variables peuvent contenir des valeurs de chaîne, de date, d’heure, de boolélique ou numérique.

  • Les variables peuvent convertir automatiquement les valeurs qu’elles contiennent.

Le inconvénient est que les variables de variante nécessitent au moins 16 octets de mémoire. 16 octets de mémoire peut être important dans les procédures de grande taille ou les modules complexes.

Pour voir comment cela fonctionne dans la Variable_Test macro, suivez ces étapes :

Modifiez le code de la Variable_Test macro par :

Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
End Sub

Exécutez la Variable_Test macro.

Vous ne recevrez pas d’erreur, car vous pouvez affecter quoi que ce soit aux variables de variante x et y.

REMARQUE : Vous pouvez également laisser dehors la ligne suivante et la macro continuera à fonctionner comme les variables x et y sont traitées comme des types de données Variant :

    Dim x, y

Étendue d’une variable

Lorsque vous déclarez une variable, elle peut être ou non visible par les autres macros du 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 niveau procédure, niveau module privé et niveau module public. L’étendue dépend de la façon et de l’endroit où vous déclarez votre ou vos variables.

Étendue au niveau de la procédure

Une variable au niveau de la procédure n’est pas visible en dehors de la procédure dans laquelle elle est déclarée. Si vous définissez la valeur d’une variable de portée au niveau de la procédure, son contenu ne sera pas visible par les autres macros.

Pour vérifier qu’une variable au niveau de l’étendue de procédure n’est pas visible en dehors de la procédure dans laquelle elle est déclarée, suivez les étapes suivantes :

  1. Insérez un nouveau module dans votre projet.

  2. Tapez les deux macros suivantes dans ce module :
      Sub Macro1() Dim x As Integer x = 10 MsgBox « x, comme vu par Macro1 est " & x 'la ligne suivante exécute Macro2 Macro2 End Sub Sub Macro2() MsgBox « x, comme vu par Macro2 est " & x End Sub

  3. Exécutez Macro1, et vous recevrez le message suivant :

    x, as seen by Macro1 is 10

  4. Cliquez sur OKpour obtenir le message suivant :

    x, as seen by Macro2 is

  5. Cliquez sur OK.

Macro2 n’affiche pas de valeur pour la variable x, car la variable x est locale par rapport à Macro1.

Étendue au niveau des modules privés et publics

Vous pouvez définir des variables dans la section Déclarations d’un module (en haut d’un module, au-dessus de toutes les sous-procédures) et définir l’étendue de votre variable à l’aide de l’instruction Publique, Dim ou Private. Si vous placez l’instruction Publique devant votre variable, elle sera disponible pour toutes les macros de tous les modules du projet. Si vous placez l’instruction Dim ou Private devant votre variable, votre variable n’est disponible que pour les macros du module dans lequel elle est déclarée.

Pour voir la différence entre l’instruction Publique et l’instruction Dim, suivez ces étapes :

  1. Enregistrez et fermez les livres ouverts, puis ouvrez un nouveau.

  2. Démarrez l’Éditeur Visual Basic’édition.

  3. Insérez un module dans votre projet.

  4. Type the following code into this module:
    
    Public x As Integer
    Sub Macro_1a()
        x = 10
        MsgBox x
        Macro_1b
    End Sub
    Sub Macro_1b()
        x = x * 2
        MsgBox x
        Macro2
    End Sub
  5. Insérez un autre module dans votre projet.

  6. Tapez le code suivant dans ce module :


    Sub Macro2()     x = x * 3
        MsgBox x
    End Sub

  7. Exécutez Macro_1a macro dans le premier module.

  8. Avec la variable x déclaré comme « Public x As Integer », les trois macros du projet ont accès à la valeur x. La première zone de message affiche la valeur 10. La deuxième zone de message affiche la valeur 20 (car x est multiplié par 2 dans Macro_1b). La zone du troisième message affiche la valeur 60 (car la valeur de x a été modifiée en 20 dans Macro_1b puis multipliée par 3 dans Macro2).

  9. Modifier la ligne de déclaration dans le premier module à partir de :

       Public x As Integer

    pour :

       Dim x As Integer

  10. Exécutez la Macro_1a macro.

  11. Avec la variable x déclarée « Dim x As Integer », seules les macros du premier module ont accès à la valeur de x. La première zone de message affiche donc la valeur 10, la deuxième affiche la valeur 20 (car x est multiplié par 2 dans Macro_1b) et la troisième affiche la valeur 0 (car macro2 ne voit pas la valeur de x et la valeur non utilisée par la macro 2).

  12. Modifier la ligne de déclaration dans le premier module à partir de :

      Dim x As Integer

    À:

        Private x As Integer

  13. Exécutez la Macro_1a macro.

  14. Les mêmes zones de message s’affichent en utilisant l’étendue de la déclaration Private que l’instruction Dim. La variable x a la même étendue, privée du module dans lequel elle est déclarée.


REMARQUE : Si vous souhaitez que l’étendue de votre variable soit limitée au module dans lequel elle est déclarée, utilisez la déclaration Privatestatement au lieu de l’instruction Dim. Ils ont tous les deux le même effet, mais l’étendue est plus claire lorsque vous lisez le code si vous utilisez l’instruction Private.
 

Durée de vie d’une variable

Durée pendant laquelle une variable conserve sa valeur est appelée durée de vie. La valeur d’une variable peut changer pendant sa durée de vie, mais elle conserve une valeur. De plus, lorsqu’une variable perd l’étendue, elle n’a plus de valeur.
 

Initialiser la valeur d’une variable

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

Variables au niveau de la procédure

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

Pour montrer le fonctionnement des variables au niveau de la procédure, suivez les étapes suivantes :

  1. Insérez un nouveau module dans votre projet.

  2. Tapez les deux macros suivantes dans ce module :

    Sub Macro1()
        'set x as a procedure level variable
       Dim x As Integer
       MsgBox « la valeur initialisée de x est « & x
       x = 10
        Boîte de réception « x est » & x
        La ligne suivante exécute Macro2
        Macro2
        Boîte de réception « x est toujours » & x
    End Sub
    Sous Macro2()
        Boîte de réception « x, tel que vu par Macro2 est » & x
    End Sub

  3. Exécuter Macro1.

  4. Vous recevez le message suivant :

        the initialized value of x is 0

  5. Cliquez sur OKpour obtenir le message :

     x is 10

  6. Cliquez sur OKpour obtenir le message suivant :

    x, as seen by Macro2 is

  7. Cliquez sur OK.

  8. Macro2 n’affiche pas de valeur pour la variable x, car la variable x est locale par rapport à Macro1. Vous recevez le message suivant :

    x is still 10

  9. Cliquez sur OK.

  10. Exécuter Macro1.

Vous recevez les mêmes messages décrits dans les étapes 3 à 6, car la valeur de la variable x a été perdue dès que Macro1 s’est arrêté à l’étape 6. Par conséquent, lorsque vous réexécutez la Macro1 à l’étape 7, le premier message affiche la valeur x comme zéro (la valeur initialisée).

Mot clé statique

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

Pour voir comment fonctionne le mot clé statique, suivez ces étapes :

  1. Change the code in Macro1 to:
    
    Sub Macro1()
        'set x as a procedure level variable
        Static x As Integer
           MsgBox "the initialized value of x is " & x
        x = x + 10
        MsgBox "x is " & x
    End Sub
  2. Exécuter Macro1.

  3. Le message suivant s'the initialized value of x is 0

  4. Cliquez sur OKpour que le message suivant s'x is 10

  5. Cliquez sur OK.

  6. Exécutez Macro1 pour obtenir le message suivant :

    the initialized value of x is 10

  7. Cliquez sur OKpour obtenir le message suivant :

    x is 20

  8. Cliquez sur OK.

Les valeurs qui apparaissent dans les messages sont différentes la deuxième fois, car la variable x est déclaré comme étant une variable statique et la variable conserve sa valeur après avoir exécuté Macro1 la première fois.

REMARQUE :  Si vous avez une variable au niveau du module, sa durée de vie est identique à s’il s’agit d’une variable statique au niveau de la procédure.

Pour vérifier la durée de vie d’une variable au niveau d’un module, suivez les étapes suivantes :

  1. Change the code in the module that contains Macro1 to the following:
    
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
       x = x + 10
       MsgBox "x is " & x
    End Sub
  2. Exécutez Macro1, et vous recevrez le message suivant :

    the initialized value of x is 0

  3. Cliquez sur OK pour obtenir le message suivant :

    x is 10

  4. Cliquez sur OK,

  5. Exécutez Macro1 et vous recevrez le message

    suivant :the initialized value of x is 10

  6. Cliquez sur OK.

  7. Vous recevez le message suivant :

    x is 20

  8. Cliquez sur OK.

Les valeurs qui apparaissent dans les messages sont différentes la deuxième fois, car la variable x est déclarée comme variable statique et conserve sa valeur après l’exécuter Macro1 la première fois.
 

Réinitialiser un projet pour réinitialiser des variables

Si vous voulez réinitialiser la valeur d’une variable statique ou d’une variable au niveau du module, cliquez sur le bouton Réinitialiser du
Barre d’outils standard ou cliquez sur Réinitialiser dans le menu Exécuter.

Si vous faites cela pour le projet Macro1, puis réexécutez Macro1,la valeur de la variable x est initialisée à zéro et vous recevez le premier message :

    the initialized value of x is 0

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×