OVH Cloud OVH Cloud

variable globale

6 réponses
Avatar
PJ
Bonjour,

Je cherche à savoir si la valeur d'une variable peut-être à la fois
utilisée dans un code de useform et lors de l'appel d'un module (fonction sub
par ex), la variable garde la valeur pour se modifier avec la fonction de sub:
En gros, je défini un répertoire = monrep dans mon useform, je le fais
évoluer, puis je lance une procédure de sauvegarde (sub sav) dans laquelle je
voudrais, là encore faire évolueur le monrep précédement défini.

Est-ce possible?
Comment définir monrep?

Merci d'avance
PJ

6 réponses

Avatar
Pounet95
Bonjour,
AMHA, si tu déclare ta variable dans un module standard, tu la verras de
partout et tu pourras la manipuler comme bon te sembles !

Public MaVariable as String 'par exemple

Pounet95

"PJ" a écrit dans le message de
news:
Bonjour,

Je cherche à savoir si la valeur d'une variable peut-être à la fois
utilisée dans un code de useform et lors de l'appel d'un module (fonction
sub
par ex), la variable garde la valeur pour se modifier avec la fonction de
sub:
En gros, je défini un répertoire = monrep dans mon useform, je le fais
évoluer, puis je lance une procédure de sauvegarde (sub sav) dans laquelle
je
voudrais, là encore faire évolueur le monrep précédement défini.

Est-ce possible?
Comment définir monrep?

Merci d'avance
PJ


Avatar
PJ
Bonjour et merci,

Donc si j'ai bien compris, je peux affecter à ma variable publique une
valeur dans le code de mon userform et la récupérer dans un module Sub par
exemple?

PJ

"Pounet95" wrote:

Bonjour,
AMHA, si tu déclare ta variable dans un module standard, tu la verras de
partout et tu pourras la manipuler comme bon te sembles !

Public MaVariable as String 'par exemple

Pounet95

"PJ" a écrit dans le message de
news:
> Bonjour,
>
> Je cherche à savoir si la valeur d'une variable peut-être à la fois
> utilisée dans un code de useform et lors de l'appel d'un module (fonction
> sub
> par ex), la variable garde la valeur pour se modifier avec la fonction de
> sub:
> En gros, je défini un répertoire = monrep dans mon useform, je le fais
> évoluer, puis je lance une procédure de sauvegarde (sub sav) dans laquelle
> je
> voudrais, là encore faire évolueur le monrep précédement défini.
>
> Est-ce possible?
> Comment définir monrep?
>
> Merci d'avance
> PJ




Avatar
Pounet95
Bonjour,
Sauf erreur, je réponds Oui !
Jusqu'à ce jour, toute variable que j'ai pu déclarer "public" dans un module
standard, a la valeur qui lui est affectée au premier appel jusqu'à ce qu'un
autre appel la modifie.
Par contre, ce que je n'ai jamais testé ( et donc vérifié ! ), c'est qu'une
variable déclarée "Public" dans un module standard puisse être déclarée
"locale" dans une procédure et/ou fonction. Je pense que le compilateur
"gueule" un truc du genre "déclaration ambigüe" ou du genre, à vérifier
et/ou confirmer par nos "pros" et surtout amis que sont les "mvp" en titre
ou méritant de l'être.

Pounet95

"PJ" a écrit dans le message de
news:
Bonjour et merci,

Donc si j'ai bien compris, je peux affecter à ma variable publique une
valeur dans le code de mon userform et la récupérer dans un module Sub par
exemple?

PJ

"Pounet95" wrote:

Bonjour,
AMHA, si tu déclare ta variable dans un module standard, tu la verras de
partout et tu pourras la manipuler comme bon te sembles !

Public MaVariable as String 'par exemple

Pounet95

"PJ" a écrit dans le message de
news:
> Bonjour,
>
> Je cherche à savoir si la valeur d'une variable peut-être à la fois
> utilisée dans un code de useform et lors de l'appel d'un module
> (fonction
> sub
> par ex), la variable garde la valeur pour se modifier avec la fonction
> de
> sub:
> En gros, je défini un répertoire = monrep dans mon useform, je le fais
> évoluer, puis je lance une procédure de sauvegarde (sub sav) dans
> laquelle
> je
> voudrais, là encore faire évolueur le monrep précédement défini.
>
> Est-ce possible?
> Comment définir monrep?
>
> Merci d'avance
> PJ






Avatar
PJ
Salut,

Bien vu, cela me met un truc de ce genre...
Tant pis, je vais essayé de contourner le pb.

Merci encore
PJ

"Pounet95" wrote:

Bonjour,
Sauf erreur, je réponds Oui !
Jusqu'à ce jour, toute variable que j'ai pu déclarer "public" dans un module
standard, a la valeur qui lui est affectée au premier appel jusqu'à ce qu'un
autre appel la modifie.
Par contre, ce que je n'ai jamais testé ( et donc vérifié ! ), c'est qu'une
variable déclarée "Public" dans un module standard puisse être déclarée
"locale" dans une procédure et/ou fonction. Je pense que le compilateur
"gueule" un truc du genre "déclaration ambigüe" ou du genre, à vérifier
et/ou confirmer par nos "pros" et surtout amis que sont les "mvp" en titre
ou méritant de l'être.

Pounet95

"PJ" a écrit dans le message de
news:
> Bonjour et merci,
>
> Donc si j'ai bien compris, je peux affecter à ma variable publique une
> valeur dans le code de mon userform et la récupérer dans un module Sub par
> exemple?
>
> PJ
>
> "Pounet95" wrote:
>
>> Bonjour,
>> AMHA, si tu déclare ta variable dans un module standard, tu la verras de
>> partout et tu pourras la manipuler comme bon te sembles !
>>
>> Public MaVariable as String 'par exemple
>>
>> Pounet95
>>
>> "PJ" a écrit dans le message de
>> news:
>> > Bonjour,
>> >
>> > Je cherche à savoir si la valeur d'une variable peut-être à la fois
>> > utilisée dans un code de useform et lors de l'appel d'un module
>> > (fonction
>> > sub
>> > par ex), la variable garde la valeur pour se modifier avec la fonction
>> > de
>> > sub:
>> > En gros, je défini un répertoire = monrep dans mon useform, je le fais
>> > évoluer, puis je lance une procédure de sauvegarde (sub sav) dans
>> > laquelle
>> > je
>> > voudrais, là encore faire évolueur le monrep précédement défini.
>> >
>> > Est-ce possible?
>> > Comment définir monrep?
>> >
>> > Merci d'avance
>> > PJ
>>
>>




Avatar
michdenis
Une variable "Public" ne peut pas être défini au niveau d'une procédure
elle l'est au niveau d'un module standard.

Si tu as utilisé le même nom pour une variable Public et pour une
variable définie localement (au niveau d'une procédure), lors de
l'exécution de la procédure, c'est la variable locale que la procédure
utilisera, elle a la priorité sur la variable Public

Si tu définis une variable Public dans un module de classe que sont
les modules "Feuille", "de classe" , "ThisWorkbook", tu devrais appeler
ta variable plutôt une "PROPRIÉTÉ" dudit module de classe où tu l'as
défini. Pour l'utiliser à l'extérieur de son module, tu dois obligatoirement
faire référence au module de classe à laquelle est appartient.

Dans la Feuil1
Public Toto as String

Sub test()
toto = "Pounet95"
End sub

Dans la feuil2

sub test()
Msgbox Feuil1.toto
end sub


"Pounet95" a écrit dans le message de groupe de discussion :

Bonjour,
Sauf erreur, je réponds Oui !
Jusqu'à ce jour, toute variable que j'ai pu déclarer "public" dans un module
standard, a la valeur qui lui est affectée au premier appel jusqu'à ce qu'un
autre appel la modifie.
Par contre, ce que je n'ai jamais testé ( et donc vérifié ! ), c'est qu'une
variable déclarée "Public" dans un module standard puisse être déclarée
"locale" dans une procédure et/ou fonction. Je pense que le compilateur
"gueule" un truc du genre "déclaration ambigüe" ou du genre, à vérifier
et/ou confirmer par nos "pros" et surtout amis que sont les "mvp" en titre
ou méritant de l'être.

Pounet95

"PJ" a écrit dans le message de
news:
Bonjour et merci,

Donc si j'ai bien compris, je peux affecter à ma variable publique une
valeur dans le code de mon userform et la récupérer dans un module Sub par
exemple?

PJ

"Pounet95" wrote:

Bonjour,
AMHA, si tu déclare ta variable dans un module standard, tu la verras de
partout et tu pourras la manipuler comme bon te sembles !

Public MaVariable as String 'par exemple

Pounet95

"PJ" a écrit dans le message de
news:
> Bonjour,
>
> Je cherche à savoir si la valeur d'une variable peut-être à la fois
> utilisée dans un code de useform et lors de l'appel d'un module
> (fonction
> sub
> par ex), la variable garde la valeur pour se modifier avec la fonction
> de
> sub:
> En gros, je défini un répertoire = monrep dans mon useform, je le fais
> évoluer, puis je lance une procédure de sauvegarde (sub sav) dans
> laquelle
> je
> voudrais, là encore faire évolueur le monrep précédement défini.
>
> Est-ce possible?
> Comment définir monrep?
>
> Merci d'avance
> PJ






Avatar
Mousnynao
Bonjour,

Sous XL2K3, la varaible locale a préséence sur la variable globale
à l'intérieur de la procédure où elle a été déclarer.

ex.:

Option Explicit
'

Public strMessage As String
'


Function CompteNbrClasseur() As Long

CompteNbrClasseur = Workbooks.Count

End Function
'

Sub Test1()

Dim strMessage As String

MsgBox "Avant affectation " & strMessage
strMessage = "mousnynao"
MsgBox "1 - " & strMessage

End Sub
'

Sub Test2()

strMessage = "oanynsuom"
MsgBox strMessage

Call Test1

End Sub
'

mousnynao

"PJ" a écrit :

Salut,

Bien vu, cela me met un truc de ce genre...
Tant pis, je vais essayé de contourner le pb.

Merci encore
PJ

"Pounet95" wrote:

> Bonjour,
> Sauf erreur, je réponds Oui !
> Jusqu'à ce jour, toute variable que j'ai pu déclarer "public" dans un module
> standard, a la valeur qui lui est affectée au premier appel jusqu'à ce qu'un
> autre appel la modifie.
> Par contre, ce que je n'ai jamais testé ( et donc vérifié ! ), c'est qu'une
> variable déclarée "Public" dans un module standard puisse être déclarée
> "locale" dans une procédure et/ou fonction. Je pense que le compilateur
> "gueule" un truc du genre "déclaration ambigüe" ou du genre, à vérifier
> et/ou confirmer par nos "pros" et surtout amis que sont les "mvp" en titre
> ou méritant de l'être.
>
> Pounet95
>
> "PJ" a écrit dans le message de
> news:
> > Bonjour et merci,
> >
> > Donc si j'ai bien compris, je peux affecter à ma variable publique une
> > valeur dans le code de mon userform et la récupérer dans un module Sub par
> > exemple?
> >
> > PJ
> >
> > "Pounet95" wrote:
> >
> >> Bonjour,
> >> AMHA, si tu déclare ta variable dans un module standard, tu la verras de
> >> partout et tu pourras la manipuler comme bon te sembles !
> >>
> >> Public MaVariable as String 'par exemple
> >>
> >> Pounet95
> >>
> >> "PJ" a écrit dans le message de
> >> news:
> >> > Bonjour,
> >> >
> >> > Je cherche à savoir si la valeur d'une variable peut-être à la fois
> >> > utilisée dans un code de useform et lors de l'appel d'un module
> >> > (fonction
> >> > sub
> >> > par ex), la variable garde la valeur pour se modifier avec la fonction
> >> > de
> >> > sub:
> >> > En gros, je défini un répertoire = monrep dans mon useform, je le fais
> >> > évoluer, puis je lance une procédure de sauvegarde (sub sav) dans
> >> > laquelle
> >> > je
> >> > voudrais, là encore faire évolueur le monrep précédement défini.
> >> >
> >> > Est-ce possible?
> >> > Comment définir monrep?
> >> >
> >> > Merci d'avance
> >> > PJ
> >>
> >>
>
>