Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'une
variable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'ai
utilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définie
à l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ce
formulaire.
Merci d'avance.
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'une
variable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'ai
utilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définie
à l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ce
formulaire.
Merci d'avance.
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'une
variable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'ai
utilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définie
à l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ce
formulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message news:Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ceformulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" <JacMar@discussions.microsoft.com> a écrit dans le message news:
CFCF328E-98E0-47A0-AD13-268594F769D8@microsoft.com...
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'une
variable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'ai
utilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définie
à l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ce
formulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message news:Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ceformulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message news:Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ceformulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" <JacMar@discussions.microsoft.com> a écrit dans le message news:
CFCF328E-98E0-47A0-AD13-268594F769D8@microsoft.com...
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'une
variable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'ai
utilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définie
à l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ce
formulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message news:Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ceformulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message news:Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ceformulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" <JacMar@discussions.microsoft.com> a écrit dans le message news:
CFCF328E-98E0-47A0-AD13-268594F769D8@microsoft.com...
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'une
variable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'ai
utilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définie
à l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ce
formulaire.
Merci d'avance.
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message news:Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui appelle
ceformulaire.
Merci d'avance.
Présentement, voici ce que j'ai:
"Public TxtNom as String (C'est le seul endroit ou la variable TxtNom est
déclarée)
"Sub FormulaireCondo ()
". . .
". . .
"FRMCondo.show
"End Sub
Dans le formulaire FRMCondo, j'entre du texte dans une "TextBox"
identifiée
comme TxtNom. Je peux utiliser la valeur de TxtNom dans la procédure
"Private
Sub CmdOK_Click ()" qui s'active quand je "clique" sur un bouton OK que
j'ai
créé sur le formulaire.
Si, cependant, j'essaye d'utiliser la valeur de TxtNom
(ActiveCell.value=TxtNom) dans une autre sub dans le même workbook, après
être passé par le formulaire, sa valeur semble être "", c'est à dire:
rien.
Que se passe-t-il. Si je comprends bien la plupart des réponses jusqu'à
maintenant, ça devrait marcher.
Merci encore d'avance.
"docm" wrote:Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message
news:
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même
projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment
que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui
appelle
ceformulaire.
Merci d'avance.
Présentement, voici ce que j'ai:
"Public TxtNom as String (C'est le seul endroit ou la variable TxtNom est
déclarée)
"Sub FormulaireCondo ()
". . .
". . .
"FRMCondo.show
"End Sub
Dans le formulaire FRMCondo, j'entre du texte dans une "TextBox"
identifiée
comme TxtNom. Je peux utiliser la valeur de TxtNom dans la procédure
"Private
Sub CmdOK_Click ()" qui s'active quand je "clique" sur un bouton OK que
j'ai
créé sur le formulaire.
Si, cependant, j'essaye d'utiliser la valeur de TxtNom
(ActiveCell.value=TxtNom) dans une autre sub dans le même workbook, après
être passé par le formulaire, sa valeur semble être "", c'est à dire:
rien.
Que se passe-t-il. Si je comprends bien la plupart des réponses jusqu'à
maintenant, ça devrait marcher.
Merci encore d'avance.
"docm" wrote:
Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" <JacMar@discussions.microsoft.com> a écrit dans le message
news:
CFCF328E-98E0-47A0-AD13-268594F769D8@microsoft.com...
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'une
variable d'une sous-routine à une autre à l'intérieur d'un même
projet.
J'ai
utilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définie
à l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment
que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui
appelle
ce
formulaire.
Merci d'avance.
Présentement, voici ce que j'ai:
"Public TxtNom as String (C'est le seul endroit ou la variable TxtNom est
déclarée)
"Sub FormulaireCondo ()
". . .
". . .
"FRMCondo.show
"End Sub
Dans le formulaire FRMCondo, j'entre du texte dans une "TextBox"
identifiée
comme TxtNom. Je peux utiliser la valeur de TxtNom dans la procédure
"Private
Sub CmdOK_Click ()" qui s'active quand je "clique" sur un bouton OK que
j'ai
créé sur le formulaire.
Si, cependant, j'essaye d'utiliser la valeur de TxtNom
(ActiveCell.value=TxtNom) dans une autre sub dans le même workbook, après
être passé par le formulaire, sa valeur semble être "", c'est à dire:
rien.
Que se passe-t-il. Si je comprends bien la plupart des réponses jusqu'à
maintenant, ça devrait marcher.
Merci encore d'avance.
"docm" wrote:Voici comment Laurent Longré résumait la question de la portée des
variables:
Une variable de niveau module est une variable déclarée au début du
module, avant toute procédure ou fonction. Elle s'oppose aux "variables
locales" par sa portée (le module tout entier) et sa durée de vie
("illimitée").
Par exemple :
Dim Toto As Boolean ' <= variable globale de niveau module
Sub Test
Dim Tata As Boolean ' <= variable locale à la procédure Test
End Sub
La variable Toto :
- est accessible à partir de n'importe quelle procédure ou fonction du
module, et éventuellement des autres modules et / ou d'autres classeurs
si elle est déclarée à l'aide du mot-clé "Public".
- conserve sa valeur tant que le classeur n'est pas fermé ni le projet
VBA réinitialisé.
La variable Tata de la procédure Test :
- n'est accessible qu'à l'intérieur de la procédure où elle est
déclarée.
- est "détruite" à la fin de l'exécution de cette procédure, à moins
qu'elle soit déclarée à l'aide du mot-clé "Static".
Pour résumer :
Variable de niveau module :
- déclarée avec Dim : portée module, durée de vie "illimitée"
- déclarée avec Public : portée classeur, durée de vie "illimitée"
Variable locale à une procédure :
- déclarée avec Dim : portée "procédure", détruite à la fin de celle-ci
- déclarée avec Static : portée procédure, durée de vie "illimitée"
Si une variable est destinée à conserver sa valeur entre chaque
exécution de la macro, et / ou si elle doit être accessible par un grand
nombre de procédures différentes, il faut la déclarer au niveau module,
avec ou sans le mot-clé Public selon que l'on veut la partager ou non
avec les autres modules du projet.
Quant à "variable d'état", ça désigne en général une variable booléenne
ou entière destinée à mémoriser si une action particulière s'est
produite, de manière par exemple à éviter d'exécuter une macro dans un
contexte où elle déclencherait une erreur. Par nature, ce type de
variable est souvent de niveau module.
Par exemple, la variable suivante permet d'indiquer à la procédure
Workbook_Open si la fermeture du classeur est demandée par une autre
procédure (AutoriserFermeture = True) ou par l'utilisateur
(AutoriserFermeture = False par défaut).
Dans le module ThisWorkbook :
Public AutoriserFermeture As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not AutoriserFermeture
End Sub
Et ensuite, pour fermer le classeur par macro :
Sub FermerClasseur()
ThisWorkbook.AutoriserFermeture = True
ThisWorkbook.Close
End Sub
Cette "variable d'état" empêche la fermeture "manuelle" du classeur par
l'utilisateur.
Comme autre type de "variable d'état", il y a par exemple les variables
stockant l'état de certains contrôles des DialogSheets avant leur
fermeture, de manière à orienter l'exécution ultérieure de la macro
selon l'état de ces contrôles, etc.
"JacMar" a écrit dans le message
news:
Je travaille en Excel 2002.
Suite à un message précédent, j'ai trouvé comment transferer la valeur
d'unevariable d'une sous-routine à une autre à l'intérieur d'un même
projet.
J'aiutilisé la déclaration: "Public ... " .
Cependant ça ne semble pas fonctionner quand la variable est d'abord
définieà l'intérieur d'un formulaire. Tant que je reste dans la procédure du
"Private Sub CmdOK_Click ()", il n'y a pas de problème, mais du moment
que
j'en sort, les variables définies dans le formulaire ne sont plus
accessibles. Elles ont été déclarées "Public", dans le module qui
appelle
ceformulaire.
Merci d'avance.