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 :

Utilisation des variables public [XL-2016]


Sujet :

Macros et VBA Excel

  1. #21
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 974
    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 : 12 974
    Points : 29 003
    Points
    29 003
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est exactement cela. Une fois que la valeur est définie, elle reste valable tant que la session d'excel est ouverte ou jusqu'au moment où tu décides de la détruire.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 257
    Points : 477
    Points
    477
    Par défaut
    il semble qu'il y ait juste besoin de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ExecuteExcel4Macro "SET.NAME(""pathServeur"",""K:\ES-SIG"")"
    pathServeur = Application.ExecuteExcel4Macro("pathServeur")
    dans "Thisworkbook open" du 1er classeur et pas besoin de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pathServeur = Application.ExecuteExcel4Macro("pathServeur")
    dans les macros et les autres classeurs, cela me semble contraire à ce que j'avais compris mais cela marche apparemment

    normal ?

  3. #23
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 974
    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 : 12 974
    Points : 29 003
    Points
    29 003
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    N'ai je pas déjà répondu par l'affirmative ou bien est-ce que je m'exprime mal ?

  4. #24
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    heuuu, j'ai un gros doute là.
    Pour moi, une variable Public sera visible de tous les modules du même classeur, mais pas des autres.
    Donc si ça tourne sans que tu aies besoin de l'initialiser dans les autres (tu confirmes ?), c'est qu'elle n'y est pas utilisée.
    Dans ce cas pas besoin tout ça.

    De plus tu nous as embrouillé en nous faisant partir sur comment lire une variable d'un autre classeur...
    Pris d'un doute, j'ai relu ta question et :
    1) j'ai défini en un endroit unique le chemin d'accès dans le premier classeur de mon enchainement (dans la cellule "H1" de la feuille paramètre "PARAM")
    Il te suffit d'aller lire cette cellule.
    eric

  5. #25
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 974
    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 : 12 974
    Points : 29 003
    Points
    29 003
    Billets dans le blog
    53
    Par défaut
    Bonjour Eric,
    Une variable publique est effectivement connue uniquement dans le projet où elle se trouve mais à partir du moment où on utilise les noms cachés ceux-ci sont lisibles depuis n'importe quel classeur tant que la session d'excel est ouverte.
    Dans ce cas là évidemment, il n'y a aucune raison d'utiliser une variable publique.
    Cependant personnellement je ne travaillerais pas comme cela mais comme on n'a aucune connaissance de la manière dont travaille le demandeur, il est difficile de proposer une autre solution tel que par exemple un fichier INI contenant le chemin du répertoire ou encore d'autres options.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 257
    Points : 477
    Points
    477
    Par défaut
    Ma demande est simple, n'avoir à modifier qu'à un seul endroit le chemin d'accès pour différencier le chemin du serveur suivant si environnement de test ou de prod

    je suis ouvert à toutes nouveautés, c'est en forgeant qu'on devient forgeron.. Mais je vous rappelle que j'ai découvert l'informatique et VBA il y a qq mois seulement, cela va parfois trop vite pour moi.

    Dans la solution actuelle, ok dans le premier classeur, celui qui contient dans "Thisworkbook open"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ExecuteExcel4Macro "SET.NAME(""pathServeur"",""K:\ES-SIG"")"
    pathServeur = Application.ExecuteExcel4Macro("pathServeur")
    par contre dans le second (ouvert par le 1er) je n'ai rien mis dans "ThisworkBook open"

    dans la macro qui doit accéder à pathServeur j'ai codé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pathServeur = Application.ExecuteExcel4Macro("pathServeur")
    et j'ai erreur de compilation : incompatibilté de type

    J'ai défini dans ce second classeur "pathServeur" dans un module comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public pathServeur As String
    je ne vois pas où est l'erreur

  7. #27
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Comme dit dans mon précédent post apparemment passé inaperçu :
    ton chemin est dans une cellule, il te suffit d'aller la lire.
    Ca peut être fait depuis n'importe quel classeur contrairement aux variables. Ca évite toutes ces acrobaties inutiles
    eric

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 257
    Points : 477
    Points
    477
    Par défaut
    Je vais envisager cette solution. Mais je voudrai trouver une solution pour ne pas à avoir à modifier mes macros et donc donner à l open la valeur de pathserveur = le contenu de la cellule contenant le chemin

  9. #29
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    De toute façon tu seras obligé de les reprendre puisqu'actuellement ça ne fonctionne pas. Non ?
    eric

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 257
    Points : 477
    Points
    477
    Par défaut
    Actuellement je modifie à la main les chemins dans la déclaration "public" dans un module de chaque classeur concerné (7 classeurs)

  11. #31
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Oui.
    Et bien à la place, dans ta macro, tu vas lire la cellule du 1er classeur (que je suppose toujours ouvert) qui contient le chemin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin=workbooks("machin").worksheets("truc").[A1].value
    ou bien continue avec le nom caché si tu avais bien avancé avec, mais ce n'est plus impératif comme avant.
    eric

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 257
    Points : 477
    Points
    477
    Par défaut
    Je vais essayer les 2 solutions ne serait-ce que pour apprendre, mais mon 1er classeur est fermé dans la suite de l'enchainement...

  13. #33
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Tu comptais lire une variable d'un fichier fermé qui, par définition, n'a pas de macro lancée ????
    Il va falloir mettre de l'ordre dans tes idées, c'est fouillis
    Si tu comptais lire avant sa fermeture, ça reste possible pour une cellule aussi.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 257
    Points : 477
    Points
    477
    Par défaut
    je me suis mal exprimé, le classeur est fermé, la cellule est lue avant fermeture bien sur

    je vous remercie tous les 2, j'ai testé vos 2 solutions avec succès après pas mal de tâtonnements.
    Mon problème de base est résolu.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2007] utilisation des variables public
    Par bigboy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/08/2009, 23h36
  2. Utiliser des variables d'une BDD
    Par Ragnarok_1er dans le forum Access
    Réponses: 3
    Dernier message: 25/01/2006, 09h32
  3. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 11h55
  4. [MFC] utilisation des variables associées
    Par Grey dans le forum MFC
    Réponses: 2
    Dernier message: 18/11/2005, 15h00
  5. Utiliser des variables d'environnements
    Par Xam335 dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/08/2004, 15h15

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