Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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" <Yvan@discussions.microsoft.com> a écrit dans le message de news:
969F5529-D7CE-41C2-AD53-43E9E3F7AC14@microsoft.com...
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 ???
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.
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 ???
-- - -
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 ???
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 ???
-- - -
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 ???
-- - -
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 ???
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 ???
-- - -
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.
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" <Yvan@discussions.microsoft.com> a écrit dans le message de news:
969F5529-D7CE-41C2-AD53-43E9E3F7AC14@microsoft.com...
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 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 ???