J'ai déclaré dans un code Excel une constante booléenne dans une procédure
mais quand je change
de SUB, la constante se vide !
comment faire pour conserver la valeur que j'impose à ma variable ?
merci.
----------------------------------
Private sub MonExemple ()
Dim MaVariable as boolean
MaVariable = 1
...../....
end sub
--------------------------------
Private Sub MaSecondeProcédure ()
Msgbox (MaVariable)
End sub
(la box donne alors une valeur vide au lieu de 1 !)
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
max
1) ce n'est pas une constante, c'est une variable (d'ailleurs, tu l'a même nommé MaVariable) 2) comme la variable est déclaré dans une fonction, ca duré de vie (ainsi que sa porté) est limité à la fonction où elle est déclarée. Dans un environnement de programmation plus strict, il te donnerais une erreur de compilation dans MaSecondeProcédure "variable MaVariable non définie".
Si tu veux déclarer une constante, fait le en dehors des fonctions/subs en utilisant le mot clé const.
"Olgga" wrote in message news:eot8SG$
Bonjour à tous,
J'ai déclaré dans un code Excel une constante booléenne dans une procédure mais quand je change de SUB, la constante se vide ! comment faire pour conserver la valeur que j'impose à ma variable ?
merci. ----------------------------------
Private sub MonExemple ()
Dim MaVariable as boolean MaVariable = 1
...../....
end sub -------------------------------- Private Sub MaSecondeProcédure ()
Msgbox (MaVariable)
End sub
(la box donne alors une valeur vide au lieu de 1 !)
1) ce n'est pas une constante, c'est une variable (d'ailleurs, tu l'a même
nommé MaVariable)
2) comme la variable est déclaré dans une fonction, ca duré de vie (ainsi
que sa porté) est limité à la fonction où elle est déclarée. Dans un
environnement de programmation plus strict, il te donnerais une erreur de
compilation dans MaSecondeProcédure "variable MaVariable non définie".
Si tu veux déclarer une constante, fait le en dehors des fonctions/subs en
utilisant le mot clé const.
"Olgga" <patrice.triquet@free.fr> wrote in message
news:eot8SG$jGHA.4588@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
J'ai déclaré dans un code Excel une constante booléenne dans une procédure
mais quand je change
de SUB, la constante se vide !
comment faire pour conserver la valeur que j'impose à ma variable ?
merci.
----------------------------------
Private sub MonExemple ()
Dim MaVariable as boolean
MaVariable = 1
...../....
end sub
--------------------------------
Private Sub MaSecondeProcédure ()
Msgbox (MaVariable)
End sub
(la box donne alors une valeur vide au lieu de 1 !)
1) ce n'est pas une constante, c'est une variable (d'ailleurs, tu l'a même nommé MaVariable) 2) comme la variable est déclaré dans une fonction, ca duré de vie (ainsi que sa porté) est limité à la fonction où elle est déclarée. Dans un environnement de programmation plus strict, il te donnerais une erreur de compilation dans MaSecondeProcédure "variable MaVariable non définie".
Si tu veux déclarer une constante, fait le en dehors des fonctions/subs en utilisant le mot clé const.
"Olgga" wrote in message news:eot8SG$
Bonjour à tous,
J'ai déclaré dans un code Excel une constante booléenne dans une procédure mais quand je change de SUB, la constante se vide ! comment faire pour conserver la valeur que j'impose à ma variable ?
merci. ----------------------------------
Private sub MonExemple ()
Dim MaVariable as boolean MaVariable = 1
...../....
end sub -------------------------------- Private Sub MaSecondeProcédure ()
Msgbox (MaVariable)
End sub
(la box donne alors une valeur vide au lieu de 1 !)
jean-marc
"Olgga" a écrit dans le message de news:eot8SG$
Bonjour à tous,
J'ai déclaré dans un code Excel une constante booléenne dans une
procédure
mais quand je change de SUB, la constante se vide ! comment faire pour conserver la valeur que j'impose à ma variable ?
merci. ----------------------------------
Private sub MonExemple ()
Dim MaVariable as boolean MaVariable = 1
...../....
end sub -------------------------------- Private Sub MaSecondeProcédure ()
Msgbox (MaVariable)
End sub
(la box donne alors une valeur vide au lieu de 1 !)
Hello,
1. Variable =/= Constante Ce que tu appelles une "constante" n'est pas une constante, mais une variable. Une constante, c'est tout à fait autre chose.
Donc quand tu fais: Dim toto as Boolean
toto est une variable, de type Booléen.
2. Durée de vie =/= portée Ce que tu nommes "durée de vie", cela s'appelle la portée d'une variable.
En VB, si tu déclares une variable au niveau d'une procédure, ce que tu fais dans Sub MonExemple(), la porté de ta variable "MaVariable" est limitée à cette procédure. Aucune autre procédure ne peut voir cette variable. Accessoirement, la durée de vie de cette variable est la durée de vie de la procédure: au moment ou tu quittes la procédure, la variable est détruite et son contenu perdu.
Donc en aucun cas tu ne peux accéder à cette variable dans "MaSecondeProcédure", à cause de: - La portée - La durée de vie
Alors pourquoi peux tu faire dans "MaSecondeProcédure": msgbox(Mavariable) et pourquoi un zéro?
Parce que VB (et VBA) sont trop laxistes: ils permettent d'utiliser une variable sans déclaration préalable (à moins que tu spécifies Option Explicit en tête de ta form, en tout cas en VB).
Donc, quand tu fais msgbox(Mavariable), il affiche simplement la valeur d'une nouvelle variable "MaVariable", qui n'a rien à voir avec celle de la procédure MonExemple. Et par défaut, il crée une variable de type Entier, et il l'initialise à zéro.
Voila :-)
Je te conseille d'acheter un bon livre de VB, les notions de portée, de durée de vie, etc. sont absolument vitales en programmation et ceci est expliqué dans les premiers chapitres de tout bon bouquin;
Si tu veux des références de bons livres, il n'y a qu'à demander :-)
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Olgga" <patrice.triquet@free.fr> a écrit dans le message de
news:eot8SG$jGHA.4588@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
J'ai déclaré dans un code Excel une constante booléenne dans une
procédure
mais quand je change
de SUB, la constante se vide !
comment faire pour conserver la valeur que j'impose à ma variable ?
merci.
----------------------------------
Private sub MonExemple ()
Dim MaVariable as boolean
MaVariable = 1
...../....
end sub
--------------------------------
Private Sub MaSecondeProcédure ()
Msgbox (MaVariable)
End sub
(la box donne alors une valeur vide au lieu de 1 !)
Hello,
1. Variable =/= Constante
Ce que tu appelles une "constante" n'est pas une constante,
mais une variable. Une constante, c'est tout à fait autre
chose.
Donc quand tu fais:
Dim toto as Boolean
toto est une variable, de type Booléen.
2. Durée de vie =/= portée
Ce que tu nommes "durée de vie", cela s'appelle
la portée d'une variable.
En VB, si tu déclares une variable au niveau d'une procédure,
ce que tu fais dans Sub MonExemple(), la porté de ta variable
"MaVariable" est limitée à cette procédure. Aucune autre
procédure ne peut voir cette variable.
Accessoirement, la durée de vie de cette variable est la durée
de vie de la procédure: au moment ou tu quittes la procédure,
la variable est détruite et son contenu perdu.
Donc en aucun cas tu ne peux accéder à cette variable dans
"MaSecondeProcédure", à cause de:
- La portée
- La durée de vie
Alors pourquoi peux tu faire dans "MaSecondeProcédure":
msgbox(Mavariable) et pourquoi un zéro?
Parce que VB (et VBA) sont trop laxistes: ils permettent
d'utiliser une variable sans déclaration préalable
(à moins que tu spécifies Option Explicit en tête de ta form,
en tout cas en VB).
Donc, quand tu fais msgbox(Mavariable), il affiche simplement
la valeur d'une nouvelle variable "MaVariable", qui n'a rien
à voir avec celle de la procédure MonExemple. Et par défaut,
il crée une variable de type Entier, et il l'initialise à zéro.
Voila :-)
Je te conseille d'acheter un bon livre de VB, les notions de portée,
de durée de vie, etc. sont absolument vitales en programmation et
ceci est expliqué dans les premiers chapitres de tout bon bouquin;
Si tu veux des références de bons livres, il n'y a qu'à demander :-)
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
J'ai déclaré dans un code Excel une constante booléenne dans une
procédure
mais quand je change de SUB, la constante se vide ! comment faire pour conserver la valeur que j'impose à ma variable ?
merci. ----------------------------------
Private sub MonExemple ()
Dim MaVariable as boolean MaVariable = 1
...../....
end sub -------------------------------- Private Sub MaSecondeProcédure ()
Msgbox (MaVariable)
End sub
(la box donne alors une valeur vide au lieu de 1 !)
Hello,
1. Variable =/= Constante Ce que tu appelles une "constante" n'est pas une constante, mais une variable. Une constante, c'est tout à fait autre chose.
Donc quand tu fais: Dim toto as Boolean
toto est une variable, de type Booléen.
2. Durée de vie =/= portée Ce que tu nommes "durée de vie", cela s'appelle la portée d'une variable.
En VB, si tu déclares une variable au niveau d'une procédure, ce que tu fais dans Sub MonExemple(), la porté de ta variable "MaVariable" est limitée à cette procédure. Aucune autre procédure ne peut voir cette variable. Accessoirement, la durée de vie de cette variable est la durée de vie de la procédure: au moment ou tu quittes la procédure, la variable est détruite et son contenu perdu.
Donc en aucun cas tu ne peux accéder à cette variable dans "MaSecondeProcédure", à cause de: - La portée - La durée de vie
Alors pourquoi peux tu faire dans "MaSecondeProcédure": msgbox(Mavariable) et pourquoi un zéro?
Parce que VB (et VBA) sont trop laxistes: ils permettent d'utiliser une variable sans déclaration préalable (à moins que tu spécifies Option Explicit en tête de ta form, en tout cas en VB).
Donc, quand tu fais msgbox(Mavariable), il affiche simplement la valeur d'une nouvelle variable "MaVariable", qui n'a rien à voir avec celle de la procédure MonExemple. Et par défaut, il crée une variable de type Entier, et il l'initialise à zéro.
Voila :-)
Je te conseille d'acheter un bon livre de VB, les notions de portée, de durée de vie, etc. sont absolument vitales en programmation et ceci est expliqué dans les premiers chapitres de tout bon bouquin;
Si tu veux des références de bons livres, il n'y a qu'à demander :-)
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Picalausa François
"jean-marc" a écrit dans le message de news: 4491c057$0$5518$
Parce que VB (et VBA) sont trop laxistes: ils permettent d'utiliser une variable sans déclaration préalable [...] Et par défaut, il crée une variable de type Entier, et il l'initialise à zéro.
Hello,
Petite rectification : Si VB créait par défaut un entier, ce serait cool, mais VB crée par défaut un Variant (horreur... désolé pour le pléonasme) et l'initialise à Empty. (Ce qui explique la messagebox vide, et CInt(Empty) = 0)
-- François Picalausa
"jean-marc" <NOSPAM_jean_marc_n2@yahoo.fr> a écrit dans le message de news:
4491c057$0$5518$ba620e4c@news.skynet.be...
Parce que VB (et VBA) sont trop laxistes: ils permettent
d'utiliser une variable sans déclaration préalable
[...] Et par défaut,
il crée une variable de type Entier, et il l'initialise à zéro.
Hello,
Petite rectification : Si VB créait par défaut un entier, ce serait cool,
mais VB crée par défaut un Variant (horreur... désolé pour le pléonasme) et
l'initialise à Empty. (Ce qui explique la messagebox vide, et CInt(Empty) =
0)
"jean-marc" a écrit dans le message de news: 4491c057$0$5518$
Parce que VB (et VBA) sont trop laxistes: ils permettent d'utiliser une variable sans déclaration préalable [...] Et par défaut, il crée une variable de type Entier, et il l'initialise à zéro.
Hello,
Petite rectification : Si VB créait par défaut un entier, ce serait cool, mais VB crée par défaut un Variant (horreur... désolé pour le pléonasme) et l'initialise à Empty. (Ce qui explique la messagebox vide, et CInt(Empty) = 0)
-- François Picalausa
jean-marc
"Picalausa François" a écrit dans le message de news:
"jean-marc" a écrit dans le message de
news:
4491c057$0$5518$ > Parce que VB (et VBA) sont trop laxistes: ils permettent > d'utiliser une variable sans déclaration préalable > [...] Et par défaut, > il crée une variable de type Entier, et il l'initialise à zéro.
Hello,
Hello!
Petite rectification : Si VB créait par défaut un entier, ce serait
cool,
mais VB crée par défaut un Variant (horreur... désolé pour le
pléonasme) et
l'initialise à Empty. (Ce qui explique la messagebox vide, et
CInt(Empty) > 0)
Oups, triple oups !! Bien sur tu as raison, je suis fatigué moi! Besoin de vacances pour JM...
Merci de la rectification!
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Picalausa François" <fpicalausa@chez.com> a écrit dans le message de
news:ebkshDkkGHA.4368@TK2MSFTNGP03.phx.gbl...
"jean-marc" <NOSPAM_jean_marc_n2@yahoo.fr> a écrit dans le message de
news:
4491c057$0$5518$ba620e4c@news.skynet.be...
> Parce que VB (et VBA) sont trop laxistes: ils permettent
> d'utiliser une variable sans déclaration préalable
> [...] Et par défaut,
> il crée une variable de type Entier, et il l'initialise à zéro.
Hello,
Hello!
Petite rectification : Si VB créait par défaut un entier, ce serait
cool,
mais VB crée par défaut un Variant (horreur... désolé pour le
pléonasme) et
l'initialise à Empty. (Ce qui explique la messagebox vide, et
CInt(Empty) > 0)
Oups, triple oups !! Bien sur tu as raison, je suis fatigué moi!
Besoin de vacances pour JM...
Merci de la rectification!
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"Picalausa François" a écrit dans le message de news:
"jean-marc" a écrit dans le message de
news:
4491c057$0$5518$ > Parce que VB (et VBA) sont trop laxistes: ils permettent > d'utiliser une variable sans déclaration préalable > [...] Et par défaut, > il crée une variable de type Entier, et il l'initialise à zéro.
Hello,
Hello!
Petite rectification : Si VB créait par défaut un entier, ce serait
cool,
mais VB crée par défaut un Variant (horreur... désolé pour le
pléonasme) et
l'initialise à Empty. (Ce qui explique la messagebox vide, et
CInt(Empty) > 0)
Oups, triple oups !! Bien sur tu as raison, je suis fatigué moi! Besoin de vacances pour JM...
Merci de la rectification!
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;