IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Optimisation code - déclaration des variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut Optimisation code - déclaration des variables
    Bonjour à tous,

    Je souhaiterais avoir votre avis concernant la déclaration de variables dans un module contenant plusieurs fonctions et procédures.

    Quels sont les avantages/inconvénients de déclarer les variables à l'intérieur de chacune d'entre elles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Procedure_1()
       dim i as byte
       [...]
    End Sub
     
    Function Fun_1() as string
       dim i as byte
       [...]
    End Function
    Ou alors de les déclarer au début du module pour l'ensemble des fonctions et procédures ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim i as byte
     
    Sub Procedure_1()
       [...]
    End Sub
     
    Function Fun_1() as string
       [...]
    End Function
    Il y a-t-il des impacts sur la rapidité du code à s'exécuter, sur la robustesse du code ou autre ?

    Merci d'avance pour vos avis sur la question !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    La différence, c'est que les variables dans les procédures et fonction sont détruites à la fin et en tête de module, quand tu quittes Excel donc, si tu lance les deux proc ci-dessous l'une après l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Dim I As Integer
     
    Sub Procedure_1()
     
        I = 10
     
        MsgBox I
     
    End Sub
     
    Sub Procedure_2()
     
        I = I + 2
     
        MsgBox I
     
    End Sub
    tu aura 10 pour la première et 12 pour la seconde car la valeur est gardée en mémoire tant que le classeur n'est pas fermée !
    et pour celles-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Sub Procedure_1()
     
    Dim I As Integer
     
        I = 10
     
        MsgBox I
     
    End Sub
     
    Sub Procedure_2()
     
    Dim I As Integer
     
        I = I + 2
     
        MsgBox I
     
    End Sub
    tu aura 10 pour la première et 2 pour la seconde car en fin de 1ère procédure, la variable est détruite et dans la 2ème procédure tu recrée une nouvelle variable I qui est initialisée à 0

  3. #3
    Invité
    Invité(e)
    Par défaut
    je ne répéterai pas ce qu'a dit Theze. mais il est toujours possible de mixer les 2!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    sub teste1() 'la on passe en paramètre  i qui est unique pour les 2
    dim i as byte
    Procedure_1 i
    Fun_1 i
    end sub 
    sub teste2() 'la on passe en paramètre  i qui est valable que pour Procedure_1
    dim i as byte
    Procedure_1 i
    end sub 
    sub teste3() 'la on passe en paramètre  i qui est valable que pour Fun_1
    dim i as byte
    Fun_1 i
    end sub 
     
    Sub Procedure_1( i as byte)
       [...]
    End Sub
     
    Function Fun_1( i as byte) as string
       [...]
    End Function

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Il est bien évident qu'il est possible de passer une variable en argument à une procédure ou fonction mais elle sera systématiquement détruite en fin de procédure initiale

  5. #5
    Invité
    Invité(e)
    Par défaut
    entièrement d'accord avec toi Theze, le reste dépend de l'utilité! perso je n'aime les variable globales dans Excel Vba.

    mais je voulais ajouter, à ta démonstration une autre possibilité!

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    C'est vrai qu'il faut bien faire attention aux valeurs quelles peuvent avoir (modifiées à différents endroits), ça peut donner des résultats surprenants et non attendus ! Je ne les utilise que quand leurs durées doivent être celle du classeur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Macro (déclaration des variables ?)
    Par Nok's dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 29/05/2007, 16h46
  2. déclaration des Variables
    Par aityahia dans le forum Coldfusion
    Réponses: 3
    Dernier message: 02/10/2006, 08h42
  3. Déclaration des variables
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 30/08/2006, 14h47
  4. [MASM32] Déclaration des variables
    Par mrousse dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/09/2005, 14h30
  5. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo