Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déclaration de variables...

4 réponses
Avatar
Yvan
Bonjour,

Est-il possible de déclarer une variable de façon à ce qu'elle soit valable
dans les classeurs qui seront ouverts après celui qui l'a initialisée ???

--
Merci pour vos réponses.

4 réponses

Avatar
MichDenis
Une variable même déclarée comme Public est limitée
au classeur qui la contient.

Si tu as vraiment besoin de connaître "une valeur" d'un autre classeur ouvert,
tu peux avoir recours au "nom masqué" (Hidden name)

Voici un complément d'information présenté par Frédéric Sigonneau
sur ce forum :

'----------------------------------------------------------
Je crois comprendre que tu cherches à passer des valeurs entre deux classeurs
(ici pour utiliser dans le classeur 798.xls la lettre d'un lecteur choisi dans
123.xls).
Une technique pour faire cela est d'utiliser l'espace des noms cachés d'Excel.
Cette technique est documentée et décrite par Laurent Longre sur cette page de
son site :

http://longre.free.fr/pages/prog/hnamespace.htm

A partir des exemples qu'il donne, tu pourrais obtenir le résultat souhaité avec
ces qq lignes de code :

'1- ==========Úns le classeur 123.xls (module standard) :
Sub abc()
MsgBox Application.ExecuteExcel4Macro("NomLecteur")
End Sub
'=========================================================
'2- ==========Úns le classeur 789.xls (module standard) :
Sub xyz()
Dim Drive, ValVar
Drive = "NomLecteur"
ValVar = InputBox("Nom du lecteur à ouvrir :")
If ValVar = "" Then Exit Sub
Application.ExecuteExcel4Macro _
"SET.NAME(""" & Drive & """,""" & ValVar & """)"
End Sub
'=========================================================
Exécute 1 fois xyz pour initialiser le nom "NomLecteur". Tu pourras ensuite en
récupérer la valeur dans 123.xls en exécutant abc.
Il n'est pas nécessaire que les deux classeurs soient ouverts en même temps,
celui qui contient la procédure exécutée suffit. Par contre, important : la
durée de vie de ces noms est limitée à la session Excel en cours.

Pour conserver la valeur d'une variable de façon plus permanente, d'une session
Excel à une autre par exemple, tu pourrais automatiser la création des noms
cachés dont tu as besoin en lançant une procédure qui les crée dans le
Workbook_Open du perso.xls, par exemple.

Mais il existe d'autres techniques. En vrac :

- conserver la valeur dans une feuille de calcul du perso.xls ou d'une macro
complémentaire (accessible donc depuis n'importe quel autre classeur)
- stocker et récupérer la valeur dans la base de registre, par ex les méthodes
VBA SaveSetting et GetSetting ou directement avec des fonctions API
- toujours avec des fonctions API, tu peux aussi utiliser des fichiers .ini
- ou encore, tout simplement, stocker ce que tu veux dans des petits fichiers
texte.
- et j'en oublie sans doute...
'----------------------------------------------------------



"Yvan" a écrit dans le message de news:

Bonjour,

Est-il possible de déclarer une variable de façon à ce qu'elle soit valable
dans les classeurs qui seront ouverts après celui qui l'a initialisée ???

--
Merci pour vos réponses.
Avatar
lSteph
Bonjour,
A toute question est il possible il est présomptueux de répondre non
dans la mesure ou quelqu'un peut toujours venir prouver le contraire
merci d'utiliser plutôt
Comment peut-on..?

Dans ces cas là on peut stocker (enregistrer) cela dans une cellule ou
un fichier, qui puisse être appelé même après qu'excel ait été fermé,
rouvert..

Cdlt.

lSteph



Yvan a exprimé avec précision :
Bonjour,

Est-il possible de déclarer une variable de façon à ce qu'elle soit valable
dans les classeurs qui seront ouverts après celui qui l'a initialisée ???


--
- -

Avatar
Yvan
Merci, à plus.

--
Merci pour vos réponses.



Bonjour,
A toute question est il possible il est présomptueux de répondre non
dans la mesure ou quelqu'un peut toujours venir prouver le contraire
merci d'utiliser plutôt
Comment peut-on..?

Dans ces cas là on peut stocker (enregistrer) cela dans une cellule ou
un fichier, qui puisse être appelé même après qu'excel ait été fermé,
rouvert..

Cdlt.

lSteph



Yvan a exprimé avec précision :
Bonjour,

Est-il possible de déclarer une variable de façon à ce qu'elle soit valable
dans les classeurs qui seront ouverts après celui qui l'a initialisée ???


--
- -






Avatar
Yvan
Merci beaucoup. A plus,
--
Merci pour vos réponses.



Une variable même déclarée comme Public est limitée
au classeur qui la contient.

Si tu as vraiment besoin de connaître "une valeur" d'un autre classeur ouvert,
tu peux avoir recours au "nom masqué" (Hidden name)

Voici un complément d'information présenté par Frédéric Sigonneau
sur ce forum :

'----------------------------------------------------------
Je crois comprendre que tu cherches à passer des valeurs entre deux classeurs
(ici pour utiliser dans le classeur 798.xls la lettre d'un lecteur choisi dans
123.xls).
Une technique pour faire cela est d'utiliser l'espace des noms cachés d'Excel.
Cette technique est documentée et décrite par Laurent Longre sur cette page de
son site :

http://longre.free.fr/pages/prog/hnamespace.htm

A partir des exemples qu'il donne, tu pourrais obtenir le résultat souhaité avec
ces qq lignes de code :

'1- ==========Úns le classeur 123.xls (module standard) :
Sub abc()
MsgBox Application.ExecuteExcel4Macro("NomLecteur")
End Sub
'========================================================= >
'2- ==========Úns le classeur 789.xls (module standard) :
Sub xyz()
Dim Drive, ValVar
Drive = "NomLecteur"
ValVar = InputBox("Nom du lecteur à ouvrir :")
If ValVar = "" Then Exit Sub
Application.ExecuteExcel4Macro _
"SET.NAME(""" & Drive & """,""" & ValVar & """)"
End Sub
'========================================================= >
Exécute 1 fois xyz pour initialiser le nom "NomLecteur". Tu pourras ensuite en
récupérer la valeur dans 123.xls en exécutant abc.
Il n'est pas nécessaire que les deux classeurs soient ouverts en même temps,
celui qui contient la procédure exécutée suffit. Par contre, important : la
durée de vie de ces noms est limitée à la session Excel en cours.

Pour conserver la valeur d'une variable de façon plus permanente, d'une session
Excel à une autre par exemple, tu pourrais automatiser la création des noms
cachés dont tu as besoin en lançant une procédure qui les crée dans le
Workbook_Open du perso.xls, par exemple.

Mais il existe d'autres techniques. En vrac :

- conserver la valeur dans une feuille de calcul du perso.xls ou d'une macro
complémentaire (accessible donc depuis n'importe quel autre classeur)
- stocker et récupérer la valeur dans la base de registre, par ex les méthodes
VBA SaveSetting et GetSetting ou directement avec des fonctions API
- toujours avec des fonctions API, tu peux aussi utiliser des fichiers .ini
- ou encore, tout simplement, stocker ce que tu veux dans des petits fichiers
texte.
- et j'en oublie sans doute...
'----------------------------------------------------------



"Yvan" a écrit dans le message de news:

Bonjour,

Est-il possible de déclarer une variable de façon à ce qu'elle soit valable
dans les classeurs qui seront ouverts après celui qui l'a initialisée ???

--
Merci pour vos réponses.