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éclaration de variable pour plusieurs formulaires [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut Déclaration de variable pour plusieurs formulaires
    Bonjour,

    est-il possible de déclaré une variable de type feuille une seule fois qui servira sur plusieurs formulaire

    en fait sur plusieurs formulaire du même fichier j'ai par exemple le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sheets ("facture").range....
    et je voudrais savoir s'il est possible de le remplacer par un alias "facture" mais que je ne déclarerais qu'une seul fois et non sur chaque formulaire

    merci.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Pour une déclaration, oui, c'est possible. Il suffit d'utiliser Public en entête d'un module.
    Mais je ne pense pas qu'il soit autorisé de renseigner une variable dans l'entête d'un module.

    Dans ton cas, je pense qu'il faudrait que ce soit non pas une variable mais une constante, ce qui n'est pas tout à fait la même chose. Elles sont renseignées définitivement au moment de la déclaration et ne peuvent plus être modifiées dans le cours du programme.
    Regarde l'instruction Const dans l'aide VBA Excel.

    Je ne suis pas sûr qu'il soit possible de déclarer des constantes de type Worksheet. Et je ne suis pas sûr non plus (je suis même quasiment sûr que non) qu'avec le type Variant tu puisses l'initialiser avec comme valeur un sheets("facture").
    Au pire, tu déclares une constante String et tu l'initialises avec "facture".

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Par défaut
    Bonjour,
    Il est tout a fait possible de déclarer une variable en tête d un moule. J utilisé cela couramment. Et effectivement en la déclarant comme "public" elle sera utilisable sur toutes les feuilles ou userform.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ma façon de faire personnelle lorsque j'ai un problème comme ça avec plusieurs valeurs :
    Je crée un Sub public (avec un nom comme "Init") dans lequel je déclare publiques les variables souhaitées et je les renseigne.
    Ensuite, je n'ai qu'à l'appeler en première ligne de chaque Sub racine.

  5. #5
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci pour votre aide

    Menhir si je comprend bien ta méthode

    tu crée une première macro, que par la suite tu appelle dans chacun de tes programme ?


    plasticine
    comment dois-je procéder pour ta methode ?

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est ça.
    Mais ça n'a d'intérêt que s'il y a plusieurs variables à initialiser et/ou beaucoup de macro "racines" qui utilisent ces variables.

    Dans ton cas, s'il n'y a qu'une seule variable, autant déclarer public une variable worksheet et une constante string en entête d'un module.
    Ensuite, tu places en première ligne de tes modules racine une ligne du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MaVarWS = Sheet("MaConst")

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    il y a bien mieux si le code se trouve dans le classeur contenant la feuille de calculs : son CodeName.
    Et dans ce cas il n'y a rien à programmer car c'est déjà un alias !

    Dans l'environnement VBA, dans la fenêtre Projet - VBAProject apparait chaque classeur ouvert.
    A l'intérieur figure le nom de chaque feuille de calculs entre parenthèses précédée de son CodeName,
    par exemple "Feuil1 (facture)" …

    Donc au lieu de Worksheets("facture").Range utiliser Feuil1.Range !

    Évidemment, dans la fenêtre des propriétés de la feuille de calculs
    le CodeName "Feuil1" dans la zone "(Name)" peut être modifié par "Facture" rendant ainsi le code plus explicite.

    L'avantage d'utiliser un CodeName est de s'affranchir d'une feuille renommée ou dont l'ordre a été modifié par l'utilisateur
    sans gérer une variable spécifique …


    Autre astuce : coder dans le module de la feuille de calculs directement Cells ou Range réfère directement à cette feuille
    tout comme le mot clé Me

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  8. #8
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci

    tout cela va me faire avancé

    le codename m'interresse car ça va me simplifié

    Bonne journée

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Ne pas voter est s'exposer à ne pas avoir de réponse lors de la prochaine discussion …

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

Discussions similaires

  1. Variable unique pour plusieurs formulaires
    Par TabbHonmin dans le forum Langage
    Réponses: 12
    Dernier message: 18/01/2014, 13h16
  2. Variables pour plusieurs boites de dialogue
    Par bontempf dans le forum MFC
    Réponses: 2
    Dernier message: 18/03/2007, 14h57
  3. [VBA-E] Conserver une variable pour plusieurs modules
    Par pilote301152 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2006, 13h14
  4. Un submit pour plusieurs formulaires
    Par beufa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/11/2005, 15h51
  5. Comment utiliser la meme table pour plusieurs formulaires
    Par pacodelareunion dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2005, 15h17

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