Conserver la valeur d'une variable entre 2 procédures
22 réponses
René Roy
Bonjour tout le monde,
Excel 2007, windows xp
Je souhaite transférer la valeur d'une variable entre 2 procédures d'un même
module mais je n'y arrive pas. Quelque chose échappe à ma compréhension.
Voici le code, pourtant simple ...
Option Explicit
Dim nomUtilisateurReel As String
Private Sub Workbook_Open()
Application.ScreenUpdating = False
LireValeurCtrl ' Lecture du nom de l'utilisateur
End Sub
Sub LireValeurCtrl()
' Lecture du nom de l'utilisateur
nomUtilisateurReel = Environ("username")
End Sub
Quand workbook_open s'exécute, il lance la procédure LireValeurCtrl qui
devrait me ramener la variable "nomUtilisateurReel". Pour une raison que
j'ignore la variable a une valeur correcte dans la procédure LireValeurCtrl
mais est vide lorsque l'exécution revient à Workbook_Open.
Pourquoi je perd la valeur de la variable entre les 2 procédures?
Merci à l'avance de votre aide qui m'est très précieuse. On trouve
énormément d'information sur ce forum.
Je crois que j'ai compris ce matin l'essentiel de ta présentation et du fonctionnement du module de classe. C'est précieusement gardé en mémoire dans un coin. Salut à toi. Bonne semaine.
"MichDenis" a écrit dans le message de news: %
Bonjour André,
Si tu débutes ton apprentissage sur l'utilisation des macros ou l'écriture de procédure, tu devrais remettre à plus tard l'apprentissage concernant les modules de classe. Car, ceux-ci font appel à des notions que tu dois maîtriser avant.
Public GrUser(1 To 5) As New MesUsers La variable "GrUser" déclarer est un "tableau" (array) Cette variable peut contenir jusqu'à 5 personnes. Dans la déclaration, j'ai déterminé les bornes de 1 à 5, c'aurait pu être autre chose, selon la problématique à résoudre.
Dans les procédures, au fur et à mesure que le programme le demande, je peux mettre dans cette variable, 5 données. Chacune d'elle à son index : GrUser(1) = "Toto". Lorsque j'ai déterminé la valeur d'un index du tableau, je peux n'importe où dans le code retrouvé dans le code la valeur que j'y ai mise x = GrUser(1)
L'intérêt des Propriétés "Let" et "Get" du module de classe, c'est qu'à chaque fois que l'on ajoute ou modifie la variable, la procédure concernée s'exécute. Dans l'exemple concerné, il aurait été possible de faire fi du module de classe et insérer les procédures "propriété "Get" et "Let" dans un module standard. J'arrête ici, à moins que tu aies une question précise sur la procédure...!
"AndréBdR" a écrit dans le message de groupe de discussion : 4aa2272e$0$23481$ Je patauge un peu, sans doute parce que je n'ai pas compris ce que je dois avoir défini au préalable dans la macro "Retrouver_LaPersonne etc.." Pourrais-tu m'éclairer un peu plus ? Merci d'avance.
"MichDenis" a écrit dans le message de news:
Juste pour le plaisir, on peut utiliser un module de classe : http://cjoint.com/?jdqYV5NVjD
Évidemment, les valeurs sont conservées le temps que le classeur est ouvert. Si tu veux conserver les valeurs lors d'une future ouverture, il faut oublier cet exemple.
"AndréBdR" a écrit dans le message de groupe de discussion : 4a9fbd60$0$12651$
Je te remercie Frédéric pour cette astuce que je cherchais un peu ... sans la trouver. Du coup, j'en demanderais un peu plus... Peut-on, durant l'exécution d'une macro, lui faire créer une fonction et lui demander d'y loger un résultat trouvé pendant le déroulement cette macro? En bref, la macro, après avoir trouvé la valeur Toto, crée une fontion Toto, où elle met la valeur de Toto qu'elle vient de trouver.
"FS" a écrit dans le message de news:
Bonjour,
Pour faire suite aux remarques de papou, une autre suggestion : utiliser une fonction personnalisée plutôt qu'une variable. Petits avantages : lecture directe du renseignement voulu sans "intermédiaire" (plus de problème de "transfert") et utilisation possible dans une feuille de calcul.
'============== >>> Function NomUser() NomUser = Environ("username") End Function
Sub essai() MsgBox NomUser End Sub '============== >>> FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
René Roy a écrit :
Bonjour tout le monde,
Excel 2007, windows xp
Je souhaite transférer la valeur d'une variable entre 2 procédures d'un même module mais je n'y arrive pas. Quelque chose échappe à ma compréhension. Voici le code, pourtant simple ...
Option Explicit Dim nomUtilisateurReel As String
Private Sub Workbook_Open() Application.ScreenUpdating = False LireValeurCtrl ' Lecture du nom de l'utilisateur End Sub Sub LireValeurCtrl() ' Lecture du nom de l'utilisateur nomUtilisateurReel = Environ("username") End Sub
Quand workbook_open s'exécute, il lance la procédure LireValeurCtrl qui devrait me ramener la variable "nomUtilisateurReel". Pour une raison que j'ignore la variable a une valeur correcte dans la procédure LireValeurCtrl mais est vide lorsque l'exécution revient à Workbook_Open.
Pourquoi je perd la valeur de la variable entre les 2 procédures?
Merci à l'avance de votre aide qui m'est très précieuse. On trouve énormément d'information sur ce forum.
René R.
Je crois que j'ai compris ce matin l'essentiel de ta présentation et du fonctionnement du module de
classe.
C'est précieusement gardé en mémoire dans un coin.
Salut à toi.
Bonne semaine.
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23YtWPRhLKHA.1376@TK2MSFTNGP02.phx.gbl...
Bonjour André,
Si tu débutes ton apprentissage sur l'utilisation des macros
ou l'écriture de procédure, tu devrais remettre à plus tard
l'apprentissage concernant les modules de classe. Car, ceux-ci
font appel à des notions que tu dois maîtriser avant.
Public GrUser(1 To 5) As New MesUsers
La variable "GrUser" déclarer est un "tableau" (array)
Cette variable peut contenir jusqu'à 5 personnes. Dans
la déclaration, j'ai déterminé les bornes de 1 à 5, c'aurait
pu être autre chose, selon la problématique à résoudre.
Dans les procédures, au fur et à mesure que le programme le
demande, je peux mettre dans cette variable, 5 données. Chacune
d'elle à son index : GrUser(1) = "Toto". Lorsque j'ai déterminé la
valeur d'un index du tableau, je peux n'importe où dans le code
retrouvé dans le code la valeur que j'y ai mise x = GrUser(1)
L'intérêt des Propriétés "Let" et "Get" du module de classe, c'est qu'à
chaque fois que l'on ajoute ou modifie la variable, la procédure concernée
s'exécute. Dans l'exemple concerné, il aurait été possible de faire fi du
module de classe et insérer les procédures "propriété "Get" et "Let"
dans un module standard. J'arrête ici, à moins que tu aies une question
précise sur la procédure...!
"AndréBdR" <chuispasla@pasdespam.fr> a écrit dans le message de groupe de discussion :
4aa2272e$0$23481$ba4acef3@news.orange.fr...
Je patauge un peu, sans doute parce que je n'ai pas compris ce que je dois avoir défini au
préalable
dans la macro "Retrouver_LaPersonne etc.."
Pourrais-tu m'éclairer un peu plus ?
Merci d'avance.
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
uRgClYKLKHA.3708@TK2MSFTNGP02.phx.gbl...
Juste pour le plaisir, on peut utiliser un module de classe :
http://cjoint.com/?jdqYV5NVjD
Évidemment, les valeurs sont conservées le temps que le classeur est ouvert.
Si tu veux conserver les valeurs lors d'une future ouverture, il faut oublier cet
exemple.
"AndréBdR" <chuispasla@pasdespam.fr> a écrit dans le message de groupe de discussion :
4a9fbd60$0$12651$ba4acef3@news.orange.fr...
Je te remercie Frédéric pour cette astuce que je cherchais un peu ... sans la trouver.
Du coup, j'en demanderais un peu plus...
Peut-on, durant l'exécution d'une macro, lui faire créer une fonction et lui demander
d'y
loger un
résultat trouvé pendant le déroulement cette macro?
En bref, la macro, après avoir trouvé la valeur Toto, crée une fontion Toto, où elle met
la valeur
de Toto qu'elle vient de trouver.
"FS" <fs@news.group> a écrit dans le message de news:
uJKzhb7KKHA.1492@TK2MSFTNGP03.phx.gbl...
Bonjour,
Pour faire suite aux remarques de papou, une autre suggestion : utiliser une fonction
personnalisée plutôt qu'une variable. Petits avantages : lecture directe du
renseignement voulu
sans "intermédiaire" (plus de problème de "transfert") et utilisation possible dans une
feuille de
calcul.
'============== >>> Function NomUser()
NomUser = Environ("username")
End Function
Sub essai()
MsgBox NomUser
End Sub
'============== >>>
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
René Roy a écrit :
Bonjour tout le monde,
Excel 2007, windows xp
Je souhaite transférer la valeur d'une variable entre 2 procédures d'un même module
mais je n'y
arrive pas. Quelque chose échappe à ma compréhension. Voici le code, pourtant simple
...
Option Explicit
Dim nomUtilisateurReel As String
Private Sub Workbook_Open()
Application.ScreenUpdating = False
LireValeurCtrl ' Lecture du nom de l'utilisateur End Sub
Sub LireValeurCtrl()
' Lecture du nom de l'utilisateur
nomUtilisateurReel = Environ("username")
End Sub
Quand workbook_open s'exécute, il lance la procédure LireValeurCtrl qui devrait me
ramener la
variable "nomUtilisateurReel". Pour une raison que j'ignore la variable a une valeur
correcte
dans la procédure LireValeurCtrl mais est vide lorsque l'exécution revient à
Workbook_Open.
Pourquoi je perd la valeur de la variable entre les 2 procédures?
Merci à l'avance de votre aide qui m'est très précieuse. On trouve énormément
d'information sur
ce forum.
Je crois que j'ai compris ce matin l'essentiel de ta présentation et du fonctionnement du module de classe. C'est précieusement gardé en mémoire dans un coin. Salut à toi. Bonne semaine.
"MichDenis" a écrit dans le message de news: %
Bonjour André,
Si tu débutes ton apprentissage sur l'utilisation des macros ou l'écriture de procédure, tu devrais remettre à plus tard l'apprentissage concernant les modules de classe. Car, ceux-ci font appel à des notions que tu dois maîtriser avant.
Public GrUser(1 To 5) As New MesUsers La variable "GrUser" déclarer est un "tableau" (array) Cette variable peut contenir jusqu'à 5 personnes. Dans la déclaration, j'ai déterminé les bornes de 1 à 5, c'aurait pu être autre chose, selon la problématique à résoudre.
Dans les procédures, au fur et à mesure que le programme le demande, je peux mettre dans cette variable, 5 données. Chacune d'elle à son index : GrUser(1) = "Toto". Lorsque j'ai déterminé la valeur d'un index du tableau, je peux n'importe où dans le code retrouvé dans le code la valeur que j'y ai mise x = GrUser(1)
L'intérêt des Propriétés "Let" et "Get" du module de classe, c'est qu'à chaque fois que l'on ajoute ou modifie la variable, la procédure concernée s'exécute. Dans l'exemple concerné, il aurait été possible de faire fi du module de classe et insérer les procédures "propriété "Get" et "Let" dans un module standard. J'arrête ici, à moins que tu aies une question précise sur la procédure...!
"AndréBdR" a écrit dans le message de groupe de discussion : 4aa2272e$0$23481$ Je patauge un peu, sans doute parce que je n'ai pas compris ce que je dois avoir défini au préalable dans la macro "Retrouver_LaPersonne etc.." Pourrais-tu m'éclairer un peu plus ? Merci d'avance.
"MichDenis" a écrit dans le message de news:
Juste pour le plaisir, on peut utiliser un module de classe : http://cjoint.com/?jdqYV5NVjD
Évidemment, les valeurs sont conservées le temps que le classeur est ouvert. Si tu veux conserver les valeurs lors d'une future ouverture, il faut oublier cet exemple.
"AndréBdR" a écrit dans le message de groupe de discussion : 4a9fbd60$0$12651$
Je te remercie Frédéric pour cette astuce que je cherchais un peu ... sans la trouver. Du coup, j'en demanderais un peu plus... Peut-on, durant l'exécution d'une macro, lui faire créer une fonction et lui demander d'y loger un résultat trouvé pendant le déroulement cette macro? En bref, la macro, après avoir trouvé la valeur Toto, crée une fontion Toto, où elle met la valeur de Toto qu'elle vient de trouver.
"FS" a écrit dans le message de news:
Bonjour,
Pour faire suite aux remarques de papou, une autre suggestion : utiliser une fonction personnalisée plutôt qu'une variable. Petits avantages : lecture directe du renseignement voulu sans "intermédiaire" (plus de problème de "transfert") et utilisation possible dans une feuille de calcul.
'============== >>> Function NomUser() NomUser = Environ("username") End Function
Sub essai() MsgBox NomUser End Sub '============== >>> FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
René Roy a écrit :
Bonjour tout le monde,
Excel 2007, windows xp
Je souhaite transférer la valeur d'une variable entre 2 procédures d'un même module mais je n'y arrive pas. Quelque chose échappe à ma compréhension. Voici le code, pourtant simple ...
Option Explicit Dim nomUtilisateurReel As String
Private Sub Workbook_Open() Application.ScreenUpdating = False LireValeurCtrl ' Lecture du nom de l'utilisateur End Sub Sub LireValeurCtrl() ' Lecture du nom de l'utilisateur nomUtilisateurReel = Environ("username") End Sub
Quand workbook_open s'exécute, il lance la procédure LireValeurCtrl qui devrait me ramener la variable "nomUtilisateurReel". Pour une raison que j'ignore la variable a une valeur correcte dans la procédure LireValeurCtrl mais est vide lorsque l'exécution revient à Workbook_Open.
Pourquoi je perd la valeur de la variable entre les 2 procédures?
Merci à l'avance de votre aide qui m'est très précieuse. On trouve énormément d'information sur ce forum.
René R.
michdenis
Et bien bravo André!
"AndréBdR" a écrit dans le message de groupe de discussion : 4aa4b9ef$0$12647$ Je crois que j'ai compris ce matin l'essentiel de ta présentation et du fonctionnement du module de classe. C'est précieusement gardé en mémoire dans un coin. Salut à toi. Bonne semaine.
"MichDenis" a écrit dans le message de news: %
Bonjour André,
Si tu débutes ton apprentissage sur l'utilisation des macros ou l'écriture de procédure, tu devrais remettre à plus tard l'apprentissage concernant les modules de classe. Car, ceux-ci font appel à des notions que tu dois maîtriser avant.
Public GrUser(1 To 5) As New MesUsers La variable "GrUser" déclarer est un "tableau" (array) Cette variable peut contenir jusqu'à 5 personnes. Dans la déclaration, j'ai déterminé les bornes de 1 à 5, c'aurait pu être autre chose, selon la problématique à résoudre.
Dans les procédures, au fur et à mesure que le programme le demande, je peux mettre dans cette variable, 5 données. Chacune d'elle à son index : GrUser(1) = "Toto". Lorsque j'ai déterminé la valeur d'un index du tableau, je peux n'importe où dans le code retrouvé dans le code la valeur que j'y ai mise x = GrUser(1)
L'intérêt des Propriétés "Let" et "Get" du module de classe, c'est qu'à chaque fois que l'on ajoute ou modifie la variable, la procédure concernée s'exécute. Dans l'exemple concerné, il aurait été possible de faire fi du module de classe et insérer les procédures "propriété "Get" et "Let" dans un module standard. J'arrête ici, à moins que tu aies une question précise sur la procédure...!
"AndréBdR" a écrit dans le message de groupe de discussion : 4aa2272e$0$23481$ Je patauge un peu, sans doute parce que je n'ai pas compris ce que je dois avoir défini au préalable dans la macro "Retrouver_LaPersonne etc.." Pourrais-tu m'éclairer un peu plus ? Merci d'avance.
"MichDenis" a écrit dans le message de news:
Juste pour le plaisir, on peut utiliser un module de classe : http://cjoint.com/?jdqYV5NVjD
Évidemment, les valeurs sont conservées le temps que le classeur est ouvert. Si tu veux conserver les valeurs lors d'une future ouverture, il faut oublier cet exemple.
"AndréBdR" a écrit dans le message de groupe de discussion : 4a9fbd60$0$12651$
Je te remercie Frédéric pour cette astuce que je cherchais un peu ... sans la trouver. Du coup, j'en demanderais un peu plus... Peut-on, durant l'exécution d'une macro, lui faire créer une fonction et lui demander d'y loger un résultat trouvé pendant le déroulement cette macro? En bref, la macro, après avoir trouvé la valeur Toto, crée une fontion Toto, où elle met la valeur de Toto qu'elle vient de trouver.
"FS" a écrit dans le message de news:
Bonjour,
Pour faire suite aux remarques de papou, une autre suggestion : utiliser une fonction personnalisée plutôt qu'une variable. Petits avantages : lecture directe du renseignement voulu sans "intermédiaire" (plus de problème de "transfert") et utilisation possible dans une feuille de calcul.
'============== >>> Function NomUser() NomUser = Environ("username") End Function
Sub essai() MsgBox NomUser End Sub '============== >>> FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
René Roy a écrit :
Bonjour tout le monde,
Excel 2007, windows xp
Je souhaite transférer la valeur d'une variable entre 2 procédures d'un même module mais je n'y arrive pas. Quelque chose échappe à ma compréhension. Voici le code, pourtant simple ...
Option Explicit Dim nomUtilisateurReel As String
Private Sub Workbook_Open() Application.ScreenUpdating = False LireValeurCtrl ' Lecture du nom de l'utilisateur End Sub Sub LireValeurCtrl() ' Lecture du nom de l'utilisateur nomUtilisateurReel = Environ("username") End Sub
Quand workbook_open s'exécute, il lance la procédure LireValeurCtrl qui devrait me ramener la variable "nomUtilisateurReel". Pour une raison que j'ignore la variable a une valeur correcte dans la procédure LireValeurCtrl mais est vide lorsque l'exécution revient à Workbook_Open.
Pourquoi je perd la valeur de la variable entre les 2 procédures?
Merci à l'avance de votre aide qui m'est très précieuse. On trouve énormément d'information sur ce forum.
René R.
Et bien bravo André!
"AndréBdR" <chuispasla@pasdespam.fr> a écrit dans le message de groupe de discussion :
4aa4b9ef$0$12647$ba4acef3@news.orange.fr...
Je crois que j'ai compris ce matin l'essentiel de ta présentation et du fonctionnement du
module de
classe.
C'est précieusement gardé en mémoire dans un coin.
Salut à toi.
Bonne semaine.
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23YtWPRhLKHA.1376@TK2MSFTNGP02.phx.gbl...
Bonjour André,
Si tu débutes ton apprentissage sur l'utilisation des macros
ou l'écriture de procédure, tu devrais remettre à plus tard
l'apprentissage concernant les modules de classe. Car, ceux-ci
font appel à des notions que tu dois maîtriser avant.
Public GrUser(1 To 5) As New MesUsers
La variable "GrUser" déclarer est un "tableau" (array)
Cette variable peut contenir jusqu'à 5 personnes. Dans
la déclaration, j'ai déterminé les bornes de 1 à 5, c'aurait
pu être autre chose, selon la problématique à résoudre.
Dans les procédures, au fur et à mesure que le programme le
demande, je peux mettre dans cette variable, 5 données. Chacune
d'elle à son index : GrUser(1) = "Toto". Lorsque j'ai déterminé la
valeur d'un index du tableau, je peux n'importe où dans le code
retrouvé dans le code la valeur que j'y ai mise x = GrUser(1)
L'intérêt des Propriétés "Let" et "Get" du module de classe, c'est qu'à
chaque fois que l'on ajoute ou modifie la variable, la procédure concernée
s'exécute. Dans l'exemple concerné, il aurait été possible de faire fi du
module de classe et insérer les procédures "propriété "Get" et "Let"
dans un module standard. J'arrête ici, à moins que tu aies une question
précise sur la procédure...!
"AndréBdR" <chuispasla@pasdespam.fr> a écrit dans le message de groupe de discussion :
4aa2272e$0$23481$ba4acef3@news.orange.fr...
Je patauge un peu, sans doute parce que je n'ai pas compris ce que je dois avoir défini
au
préalable
dans la macro "Retrouver_LaPersonne etc.."
Pourrais-tu m'éclairer un peu plus ?
Merci d'avance.
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
uRgClYKLKHA.3708@TK2MSFTNGP02.phx.gbl...
Juste pour le plaisir, on peut utiliser un module de classe :
http://cjoint.com/?jdqYV5NVjD
Évidemment, les valeurs sont conservées le temps que le classeur est ouvert.
Si tu veux conserver les valeurs lors d'une future ouverture, il faut oublier cet
exemple.
"AndréBdR" <chuispasla@pasdespam.fr> a écrit dans le message de groupe de discussion :
4a9fbd60$0$12651$ba4acef3@news.orange.fr...
Je te remercie Frédéric pour cette astuce que je cherchais un peu ... sans la trouver.
Du coup, j'en demanderais un peu plus...
Peut-on, durant l'exécution d'une macro, lui faire créer une fonction et lui demander
d'y
loger un
résultat trouvé pendant le déroulement cette macro?
En bref, la macro, après avoir trouvé la valeur Toto, crée une fontion Toto, où elle
met
la valeur
de Toto qu'elle vient de trouver.
"FS" <fs@news.group> a écrit dans le message de news:
uJKzhb7KKHA.1492@TK2MSFTNGP03.phx.gbl...
Bonjour,
Pour faire suite aux remarques de papou, une autre suggestion : utiliser une fonction
personnalisée plutôt qu'une variable. Petits avantages : lecture directe du
renseignement voulu
sans "intermédiaire" (plus de problème de "transfert") et utilisation possible dans
une
feuille de
calcul.
'============== >>> Function NomUser()
NomUser = Environ("username")
End Function
Sub essai()
MsgBox NomUser
End Sub
'============== >>>
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
René Roy a écrit :
Bonjour tout le monde,
Excel 2007, windows xp
Je souhaite transférer la valeur d'une variable entre 2 procédures d'un même module
mais je n'y
arrive pas. Quelque chose échappe à ma compréhension. Voici le code, pourtant simple
...
Option Explicit
Dim nomUtilisateurReel As String
Private Sub Workbook_Open()
Application.ScreenUpdating = False
LireValeurCtrl ' Lecture du nom de l'utilisateur End Sub
Sub LireValeurCtrl()
' Lecture du nom de l'utilisateur
nomUtilisateurReel = Environ("username")
End Sub
Quand workbook_open s'exécute, il lance la procédure LireValeurCtrl qui devrait me
ramener la
variable "nomUtilisateurReel". Pour une raison que j'ignore la variable a une valeur
correcte
dans la procédure LireValeurCtrl mais est vide lorsque l'exécution revient à
Workbook_Open.
Pourquoi je perd la valeur de la variable entre les 2 procédures?
Merci à l'avance de votre aide qui m'est très précieuse. On trouve énormément
d'information sur
ce forum.
"AndréBdR" a écrit dans le message de groupe de discussion : 4aa4b9ef$0$12647$ Je crois que j'ai compris ce matin l'essentiel de ta présentation et du fonctionnement du module de classe. C'est précieusement gardé en mémoire dans un coin. Salut à toi. Bonne semaine.
"MichDenis" a écrit dans le message de news: %
Bonjour André,
Si tu débutes ton apprentissage sur l'utilisation des macros ou l'écriture de procédure, tu devrais remettre à plus tard l'apprentissage concernant les modules de classe. Car, ceux-ci font appel à des notions que tu dois maîtriser avant.
Public GrUser(1 To 5) As New MesUsers La variable "GrUser" déclarer est un "tableau" (array) Cette variable peut contenir jusqu'à 5 personnes. Dans la déclaration, j'ai déterminé les bornes de 1 à 5, c'aurait pu être autre chose, selon la problématique à résoudre.
Dans les procédures, au fur et à mesure que le programme le demande, je peux mettre dans cette variable, 5 données. Chacune d'elle à son index : GrUser(1) = "Toto". Lorsque j'ai déterminé la valeur d'un index du tableau, je peux n'importe où dans le code retrouvé dans le code la valeur que j'y ai mise x = GrUser(1)
L'intérêt des Propriétés "Let" et "Get" du module de classe, c'est qu'à chaque fois que l'on ajoute ou modifie la variable, la procédure concernée s'exécute. Dans l'exemple concerné, il aurait été possible de faire fi du module de classe et insérer les procédures "propriété "Get" et "Let" dans un module standard. J'arrête ici, à moins que tu aies une question précise sur la procédure...!
"AndréBdR" a écrit dans le message de groupe de discussion : 4aa2272e$0$23481$ Je patauge un peu, sans doute parce que je n'ai pas compris ce que je dois avoir défini au préalable dans la macro "Retrouver_LaPersonne etc.." Pourrais-tu m'éclairer un peu plus ? Merci d'avance.
"MichDenis" a écrit dans le message de news:
Juste pour le plaisir, on peut utiliser un module de classe : http://cjoint.com/?jdqYV5NVjD
Évidemment, les valeurs sont conservées le temps que le classeur est ouvert. Si tu veux conserver les valeurs lors d'une future ouverture, il faut oublier cet exemple.
"AndréBdR" a écrit dans le message de groupe de discussion : 4a9fbd60$0$12651$
Je te remercie Frédéric pour cette astuce que je cherchais un peu ... sans la trouver. Du coup, j'en demanderais un peu plus... Peut-on, durant l'exécution d'une macro, lui faire créer une fonction et lui demander d'y loger un résultat trouvé pendant le déroulement cette macro? En bref, la macro, après avoir trouvé la valeur Toto, crée une fontion Toto, où elle met la valeur de Toto qu'elle vient de trouver.
"FS" a écrit dans le message de news:
Bonjour,
Pour faire suite aux remarques de papou, une autre suggestion : utiliser une fonction personnalisée plutôt qu'une variable. Petits avantages : lecture directe du renseignement voulu sans "intermédiaire" (plus de problème de "transfert") et utilisation possible dans une feuille de calcul.
'============== >>> Function NomUser() NomUser = Environ("username") End Function
Sub essai() MsgBox NomUser End Sub '============== >>> FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
René Roy a écrit :
Bonjour tout le monde,
Excel 2007, windows xp
Je souhaite transférer la valeur d'une variable entre 2 procédures d'un même module mais je n'y arrive pas. Quelque chose échappe à ma compréhension. Voici le code, pourtant simple ...
Option Explicit Dim nomUtilisateurReel As String
Private Sub Workbook_Open() Application.ScreenUpdating = False LireValeurCtrl ' Lecture du nom de l'utilisateur End Sub Sub LireValeurCtrl() ' Lecture du nom de l'utilisateur nomUtilisateurReel = Environ("username") End Sub
Quand workbook_open s'exécute, il lance la procédure LireValeurCtrl qui devrait me ramener la variable "nomUtilisateurReel". Pour une raison que j'ignore la variable a une valeur correcte dans la procédure LireValeurCtrl mais est vide lorsque l'exécution revient à Workbook_Open.
Pourquoi je perd la valeur de la variable entre les 2 procédures?
Merci à l'avance de votre aide qui m'est très précieuse. On trouve énormément d'information sur ce forum.