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 :

Declaration constantes dans un sub indépendant


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 Declaration constantes dans un sub indépendant
    Bonjour,

    Je souhaiterais déclarer des constantes dans un sub() contenu dans un module pour ensuite pouvoir utiliser ces même constantes dans différents modules de mon projet...

    J'ai donc déclaré mes constantes dans le module "Fonctions" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub Declaration_constantes()
    Public Const nb_lig As Byte = 6
    End sub
    Dans un autre module, j'appelle donc cette procédure à l'intérieur d'une autre procédure pour connaitre ces constantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Call Fonctions.Declaration_constantes
    Or mon programme ne reconnait pas mes constantes : il m'indique erreur de compilation, variables non définies...

    Auriez-vous des idées pour réussir mon objectif (le problème vient-il plutôt de la forme ou de la position de l'appel, ou de tout autre chose) ?

    Merci d'avance !

  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,

    Une constante, même déclarée Public (ce qui ne sert à rien !), dans une Sub ou Function n'a pas de portée externe à la procédure ou fonction dans laquelle elle est déclarée donc, pas visible ailleurs même dans le même module. De toute façon, la valeur d'une constante doit être déclarée au moment de sa création et ne peut être modifiée par la suite et c'est justement le but d'une constante, de rester constante ;-). Seules les variables peuvent voir leurs valeurs changer.
    Ceci dans le même module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Const nb_lig As Byte = 6 'en tête de module
     
    Sub Test()
     
        MsgBox nb_lig
     
    End Sub
    La sub a accès à la valeur de la constante mais si elle se trouve dans un autre module, la portée de la constante sans "Public" ne lui permet pas d'être visible depuis un autre module que dans le module où elle se trouve.
    La déclaration Public lui permet une visibilité dans tout le projet à condition qu'elle soit déclarée dans un module standard (Public est interdit dans un module de feuille, dans le module du classeur ou d'un module de classe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Const nb_lig As Byte = 6
    Seules les "Variables" déclarées Public dans les modules des feuilles et classeur peuvent avoir une portée externe à leur propre module mais dans ce cas, il faut les préfixer du nom de l'objet auquel elles appartiennent. Une variable dans le module d'une feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public nb_lig As Byte
    Visible et modifiable depuis un autre endroit de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Test()
     
        Worksheets("Feuil1").nb_lig = 6
        MsgBox Worksheets("Feuil1").nb_lig
     
        'ou encore :
        Feuil1.nb_lig = 6
        MsgBox Feuil1.nb_lig
     
    End Sub

  3. #3
    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
    Bonjour Theze et merci beaucoup pour ces précisions détaillées.

    Juste une petite précision : une constante déclarée en public dans un module standard pourra donc être utilisée dans un autre module même si celui contenant la déclaration/initialisation n'est pas exécuté ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je te conseille la lecture de ce tutoriel Utiliser les variables en VBA Excel et tout particulièrement le chapitre V. Les niveaux de variables
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Constantes dans un fichier commun séparé
    Par proth dans le forum Langage
    Réponses: 3
    Dernier message: 26/01/2006, 16h21
  2. Réponses: 5
    Dernier message: 24/05/2005, 10h09
  3. creer champ avec valeur constante dans resultat de requete
    Par freejeje dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/05/2005, 10h52
  4. Réponses: 3
    Dernier message: 18/02/2005, 19h19
  5. ajout d'une constante dans un select
    Par Shabata dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 18h24

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