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.
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.
il semble qu'il y ait juste besoin de :
dans "Thisworkbook open" du 1er classeur et pas 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 les macros et les autres classeurs, cela me semble contraire à ce que j'avais compris mais cela marche apparemment
Code : Sélectionner tout - Visualiser dans une fenêtre à part pathServeur = Application.ExecuteExcel4Macro("pathServeur")
normal ?
Bonjour,
N'ai je pas déjà répondu par l'affirmative ou bien est-ce que je m'exprime mal ?
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 :
Il te suffit d'aller lire cette cellule.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")
eric
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.
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"
par contre dans le second (ouvert par le 1er) je n'ai rien mis 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")
dans la macro qui doit accéder à pathServeur j'ai codé
et j'ai erreur de compilation : incompatibilté de type
Code : Sélectionner tout - Visualiser dans une fenêtre à part pathServeur = Application.ExecuteExcel4Macro("pathServeur")
J'ai défini dans ce second classeur "pathServeur" dans un module comme :je ne vois pas où est l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public pathServeur As String
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
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
De toute façon tu seras obligé de les reprendre puisqu'actuellement ça ne fonctionne pas. Non ?
eric
Actuellement je modifie à la main les chemins dans la déclaration "public" dans un module de chaque classeur concerné (7 classeurs)
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.
ou bien continue avec le nom caché si tu avais bien avancé avec, mais ce n'est plus impératif comme avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part chemin=workbooks("machin").worksheets("truc").[A1].value
eric
Je vais essayer les 2 solutions ne serait-ce que pour apprendre, mais mon 1er classeur est fermé dans la suite de l'enchainement...
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.
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager