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 :

Déclare Worksheet en Public [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Déclare Worksheet en Public
    Bonjour,

    je suis en train d'optimiser mes classeurs en regroupant et en normalisant mes variables le plus possibles en Public

    Dans cette optimisation je voudrai déclarer les feuilles de mes classeurs également en public mais je lis partout que cela n'est pas possible. J'ai essayé sans succès

    Peut-on déclarer en public l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim x as worksheet
    set x = Sheets("Feuil")

  2. #2
    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,
    J'ai essayé sans succès
    Mais encore ?

    D'abords et avant tout, pour éviter tout problème, il est important de préciser le parent de ta feuille soit le classeur ?
    Si le code VBA et la feuille en question se trouvent dans le même classeur, je privilégierais l'utilisation du CodeName de la feuille ce qui évite l'utilisation d'une variable objet et surtout offre plus de sécurité

    Voir un article sur ce sujet VBA – CodeName d’une feuille Excel

    [EDIT]
    Pour déclarer une variable publique Dim x as Worksheet n'est pas la bonne syntaxe mais bien Public x as Worksheet.


    A lire éventuellement Utiliser les variables en VBA Excel
    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

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Merci pour le codename

    oui le parent de mes feuilles est le classeur, je pense créer un module dans lequel je mets toutes les variables communes à mes feuilles

    je constate que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const x As Worksheet = Sheets("Feuil1")
    erreur de compilation "Attendu : nom de type"

    alors que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public x As Worksheet
    Public Const x = Sheets("Feuil1")
    ne pose pas de pb à la compilation

    En fait j'aimerai même que ces variables, communes à tous mes classeurs, soit déclarées à un seul endroit au lieu de créer le même module dans chaque classeur, mais aucune idée

  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,
    En fait j'aimerai même que ces variables, communes à tous mes classeurs, soit déclarées à un seul endroit au lieu de créer le même module dans chaque classeur, mais aucune idée
    Encore une fois, si tu utilises le CodeName de la feuille, tu n'as plus besoins de passer par des variables ou des constantes et je le répète, tu évites les problèmes et notamment qu'un utilisateur modifie le nom de sa feuille.

    Plutôt que d'utiliser des variables globales à répéter dans plusieurs classeurs, il est plus intéressant de passer par un fichier INI qui a l'avantage de pouvoir être divisé en sections, chacune d'elle ayant des paramètres que tu organises comme tu le souhaites.

    [EDIT]
    Je suis très étonné que tu annonces que tu n'as pas de problème de compilation avec les deux lignes d'instructions que tu as publiées car on ne peut pas avoir un même nom pour une variable et une constante. Tu aurais dû avoir un message d'erreur "Nom ambigu détecté"
    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

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Bonjour,

    je vais commencer par tester le codename, ensuite j'étudierai la solution .ini qui me semble plus longue du fait que je ne connais pas ce genre de fichier

    Pour la solution codename je ne comprends pas comment l'utiliser par exemple dans un module où je voudrai adresser plusieurs feuilles de mon classeur, en d'autres termes comment remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set x = Sheets("F1")
    Set y = Sheets("F2")
    par l'adressage par codename ?

    qq chose que je n'ai pas encore saisi

  6. #6
    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,
    Dans le lien que j'ai publié, tout est expliqué me semble t'il
    C'est simplement CodeName.Methode ou encore MsgBox CodeName.Propriété exactement comme on le ferait avec une variable objet
    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. definir un public worksheet
    Par sylvain133 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/11/2013, 17h50
  2. [XL-2003] Visibilité des variables déclarées "Public" entre plusieurs classeurs
    Par gerardmarquer dans le forum Excel
    Réponses: 0
    Dernier message: 17/06/2013, 20h03
  3. [AC-2010] Portée d'une variable déclarée en public
    Par nde1303 dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/10/2012, 17h02
  4. [AC-2003] Perte des valeurs des variables déclarées en Public
    Par Darkzombie dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/03/2010, 09h58
  5. Variables déclarées avec l'instruction Public
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 21/10/2008, 19h31

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