OVH Cloud OVH Cloud

Question idiote....

7 réponses
Avatar
ThierryP
Bonjour tout le monde !!

En haut d'un module standard, je déclare une variable publique et dans
le workbook_open, je lui affecte le nom du classeur, le but étant de de
l'utiliser dans diverses procédures qui elles-même ouvrent d'autres
classeurs.
Au premier lancement de la proc après l'ouverture, tout va bien, ma
variable a une valeur.
Si je relance cette proc, ma variable est vide...

Est-ce qu'une variable s'use si l'on s'en sert ?????????

Merci d'avance !!
--
@+ thierryp

7 réponses

Avatar
JB
Bonjour,

Je ne parviens pas à reproduire le pb

http://cjoint.com/?bkq1L2CTed

Dans un module: Public nomClasseur As String

Dans ThisWorkBook:

Private Sub Workbook_Open()
nomClasseur = ActiveWorkbook.Name
End Sub

Sub essai2()
MsgBox nomClasseur
End Sub

Dans un module:

Sub essai()
MsgBox nomClasseur
End Sub

Cordialement JB
Avatar
michdenis
Bonjour ThierryP,

Attention de ne pas déclarer localement (au niveau de la procédure) un nom
de variable qui est identique à ta variable Public car dans ce cas, c'est ta
variable locale qui a la préséance et comme elle n'a pas été renseigné,
elle est donc vide ! Cela n'affecte en rien la valeur de la variable Public,
mais comme tu as défini une variable locale du même nom, elle n'est
tout simplement pas disponible laissant la place à ta variable locale.


Salutations!


"ThierryP" a écrit dans le message de news: %23%239k$
Bonjour tout le monde !!

En haut d'un module standard, je déclare une variable publique et dans
le workbook_open, je lui affecte le nom du classeur, le but étant de de
l'utiliser dans diverses procédures qui elles-même ouvrent d'autres
classeurs.
Au premier lancement de la proc après l'ouverture, tout va bien, ma
variable a une valeur.
Si je relance cette proc, ma variable est vide...

Est-ce qu'une variable s'use si l'on s'en sert ?????????

Merci d'avance !!
--
@+ thierryp
Avatar
ThierryP
Bonjour JB,

Merci de te pencher sur mon souci !!
En fait, comme je suis en train de développer un classeur, je fais des
essais, il y a des plantages :-(((, donc j'interromps la proc ou je
débugge. C'est après des trucs de ce genre que ça se produit.
Y aurait-il un truc pour m'éviter de relancer la proc Workbook_Open pour
remettre une valeur dans ma variable ???

Bonjour,

Je ne parviens pas à reproduire le pb

http://cjoint.com/?bkq1L2CTed

Dans un module: Public nomClasseur As String

Dans ThisWorkBook:

Private Sub Workbook_Open()
nomClasseur = ActiveWorkbook.Name
End Sub

Sub essai2()
MsgBox nomClasseur
End Sub

Dans un module:

Sub essai()
MsgBox nomClasseur
End Sub

Cordialement JB



--
@+ thierryp

Avatar
ThierryP
Merci michdenis,

Je me suis déjà fait avoir par çà, donc maintenant je fais attention !!!
J'ai donné d'autres précisions à JB dans le même fil,...et toutes les
suggestions seront les bienvenues !!

Bonjour ThierryP,

Attention de ne pas déclarer localement (au niveau de la procédure) un nom
de variable qui est identique à ta variable Public car dans ce cas, c'est ta
variable locale qui a la préséance et comme elle n'a pas été renseigné,
elle est donc vide ! Cela n'affecte en rien la valeur de la variable Public,
mais comme tu as défini une variable locale du même nom, elle n'est
tout simplement pas disponible laissant la place à ta variable locale.


Salutations!


"ThierryP" a écrit dans le message de news: %23%239k$
Bonjour tout le monde !!

En haut d'un module standard, je déclare une variable publique et dans
le workbook_open, je lui affecte le nom du classeur, le but étant de de
l'utiliser dans diverses procédures qui elles-même ouvrent d'autres
classeurs.
Au premier lancement de la proc après l'ouverture, tout va bien, ma
variable a une valeur.
Si je relance cette proc, ma variable est vide...

Est-ce qu'une variable s'use si l'on s'en sert ?????????

Merci d'avance !!


--
@+ thierryp

Avatar
yoyoalternatif
Bonjour,

un truc idiot me vient:
N'y a-t-il pas un END qq part?

yoyo
Avatar
anonymousA
Bonjour,

il est normal qu'après plantage la variable publique ne soit plus
renseignée. En effet, le fait de réinitialiser où même d'ailleurs, de
rajouter une autre variable dans la section des déclarations dans
laquelle se trouve la variable remet d'une certaine manière les
compteurs à zéro.
En conséquence ta variable doit être à nouveau renseignée après plantage
si tu veux qu'ensuite le programme puisse s'en servir utiliement

A+

Bonjour JB,

Merci de te pencher sur mon souci !!
En fait, comme je suis en train de développer un classeur, je fais des
essais, il y a des plantages :-(((, donc j'interromps la proc ou je
débugge. C'est après des trucs de ce genre que ça se produit.
Y aurait-il un truc pour m'éviter de relancer la proc Workbook_Open pour
remettre une valeur dans ma variable ???


Bonjour,

Je ne parviens pas à reproduire le pb

http://cjoint.com/?bkq1L2CTed

Dans un module: Public nomClasseur As String

Dans ThisWorkBook:

Private Sub Workbook_Open()
nomClasseur = ActiveWorkbook.Name
End Sub

Sub essai2()
MsgBox nomClasseur
End Sub

Dans un module:

Sub essai()
MsgBox nomClasseur
End Sub

Cordialement JB






Avatar
ThierryP
Bonjour,
:-(((((((( C'est ce que j'ai fini par découvrir....Donc, pour l'instant,
je l'ai mis en constante jusqu'à ce que le modèle soit au point.

Merci à tous ceux qui m'ont aidé.

Bonjour,

il est normal qu'après plantage la variable publique ne soit plus
renseignée. En effet, le fait de réinitialiser où même d'ailleurs, de
rajouter une autre variable dans la section des déclarations dans
laquelle se trouve la variable remet d'une certaine manière les
compteurs à zéro.
En conséquence ta variable doit être à nouveau renseignée après plantage
si tu veux qu'ensuite le programme puisse s'en servir utiliement

A+


Bonjour JB,

Merci de te pencher sur mon souci !!
En fait, comme je suis en train de développer un classeur, je fais des
essais, il y a des plantages :-(((, donc j'interromps la proc ou je
débugge. C'est après des trucs de ce genre que ça se produit.
Y aurait-il un truc pour m'éviter de relancer la proc Workbook_Open
pour remettre une valeur dans ma variable ???


Bonjour,

Je ne parviens pas à reproduire le pb

http://cjoint.com/?bkq1L2CTed

Dans un module: Public nomClasseur As String

Dans ThisWorkBook:

Private Sub Workbook_Open()
nomClasseur = ActiveWorkbook.Name
End Sub

Sub essai2()
MsgBox nomClasseur
End Sub

Dans un module:

Sub essai()
MsgBox nomClasseur
End Sub

Cordialement JB






--
@+ thierryp