OVH Cloud OVH Cloud

variable publique

15 réponses
Avatar
bourby
bonjour,

les variables "Public" ont une portée "module". Mais je voudrais
récupérer dans le module 2 une la valeur d'une variable du module 1.

Comment faire?

D'avance merci.

Bourby

5 réponses

1 2
Avatar
bourby
Bonsoir,

mon problème pourrait bien venir de ces évènements, car mes variables
sont effectivements "vides", alors qu'elles ont eu une valeur un peu
plus tôt dans la même session.

Peut-on trouver une liste de ces évènements (pas trouvé dans l'aide,
mais je n'ai peut-être pas utilisé les bons critères dans ma recherche).

Et comment contourner ce problème? J'ai besoin que ça marche à tous les
coups...

Encore merci pour ton temps et celui de tous ceux qui répondent.

Bourby




LSteph wrote:
oupps... > (de l'application) du projet


"LSteph" a écrit dans le message de news:


Non , la portée est globale avec Public c'est à dire toute l'instance de
l'application
la réservation au module correspond à Private ou Dim entt de module.
mais certains événements comme une interruption de macro par End
remettent tout à Rien.

A+

"bourby" a écrit dans le message de news:


Bonsoir LSteph,

Oui, quand je fais un petit jeu d'essai, ça marche.
Mais, dans un vrai classeur, avec des macros plus évoluées, qui créent un
fichier nouveau, puis l'enregistrent et le ferment, avant de revenir au
classeur d'origine, j'ai assez souvent (mais pas à chaque fois...) une
difficulté avec ça: la valeur de mes variables publiques (initialisées
dans le module 1) n'est plus accessible dans le module 2.

L'aide d'Excel précise bien la portée : module (pas application).
J'aurais donc besoin d'une solution robuste (= qui marche à tous les
coups ...). Comment s'y prendre?

D'avance merci

Bourby



LSteph wrote:

Bonsoir,
Ben Si! cela va bien Public

lSteph
"bourby" a écrit dans le message de news:
u$%


bonjour,

les variables "Public" ont une portée "module". Mais je voudrais
récupérer dans le module 2 une la valeur d'une variable du module 1.

Comment faire?

D'avance merci.

Bourby














Avatar
anonymousA
L'instruction End a effectivement comme effet de réinitialiser les
variables y compris les variables publiques.
Je suis cependant surpris si tu utilises cette instruction car on y fait
rarement appel.

A+
Bonsoir,

mon problème pourrait bien venir de ces évènements, car mes variables
sont effectivements "vides", alors qu'elles ont eu une valeur un peu
plus tôt dans la même session.

Peut-on trouver une liste de ces évènements (pas trouvé dans l'aide,
mais je n'ai peut-être pas utilisé les bons critères dans ma recherche).

Et comment contourner ce problème? J'ai besoin que ça marche à tous les
coups...

Encore merci pour ton temps et celui de tous ceux qui répondent.

Bourby




LSteph wrote:

oupps... > (de l'application) du projet


"LSteph" a écrit dans le message de news:


Non , la portée est globale avec Public c'est à dire toute l'instance
de l'application
la réservation au module correspond à Private ou Dim entt de module.
mais certains événements comme une interruption de macro par End
remettent tout à Rien.

A+

"bourby" a écrit dans le message de news:


Bonsoir LSteph,

Oui, quand je fais un petit jeu d'essai, ça marche.
Mais, dans un vrai classeur, avec des macros plus évoluées, qui
créent un fichier nouveau, puis l'enregistrent et le ferment, avant
de revenir au classeur d'origine, j'ai assez souvent (mais pas à
chaque fois...) une difficulté avec ça: la valeur de mes variables
publiques (initialisées dans le module 1) n'est plus accessible dans
le module 2.

L'aide d'Excel précise bien la portée : module (pas application).
J'aurais donc besoin d'une solution robuste (= qui marche à tous les
coups ...). Comment s'y prendre?

D'avance merci

Bourby



LSteph wrote:

Bonsoir,
Ben Si! cela va bien Public

lSteph
"bourby" a écrit dans le message de news:
u$%


bonjour,

les variables "Public" ont une portée "module". Mais je voudrais
récupérer dans le module 2 une la valeur d'une variable du module 1.

Comment faire?

D'avance merci.

Bourby

















Avatar
LeSteph
Re,
Pour rejoindre ce que disent Anonymous et Isabelle ce n'est pas une question
de version mais de réinitialisation des variables
Dis nous quand ces variables se perdent (hormis end ou fermeture comme déjà
évoqué) et où/comment tu les déclares et initialise..
Au besoin ce que font les modules aiderait..

A+
lSteph
"bourby" a écrit dans le message de news:

Bonsoir,

mon problème pourrait bien venir de ces évènements, car mes variables sont
effectivements "vides", alors qu'elles ont eu une valeur un peu plus tôt
dans la même session.

Peut-on trouver une liste de ces évènements (pas trouvé dans l'aide, mais
je n'ai peut-être pas utilisé les bons critères dans ma recherche).

Et comment contourner ce problème? J'ai besoin que ça marche à tous les
coups...

Encore merci pour ton temps et celui de tous ceux qui répondent.

Bourby




LSteph wrote:
oupps... > (de l'application) du projet


"LSteph" a écrit dans le message de news:


Non , la portée est globale avec Public c'est à dire toute l'instance de
l'application
la réservation au module correspond à Private ou Dim entt de module.
mais certains événements comme une interruption de macro par End
remettent tout à Rien.

A+

"bourby" a écrit dans le message de news:


Bonsoir LSteph,

Oui, quand je fais un petit jeu d'essai, ça marche.
Mais, dans un vrai classeur, avec des macros plus évoluées, qui créent
un fichier nouveau, puis l'enregistrent et le ferment, avant de revenir
au classeur d'origine, j'ai assez souvent (mais pas à chaque fois...)
une difficulté avec ça: la valeur de mes variables publiques
(initialisées dans le module 1) n'est plus accessible dans le module 2.

L'aide d'Excel précise bien la portée : module (pas application).
J'aurais donc besoin d'une solution robuste (= qui marche à tous les
coups ...). Comment s'y prendre?

D'avance merci

Bourby



LSteph wrote:

Bonsoir,
Ben Si! cela va bien Public

lSteph
"bourby" a écrit dans le message de news:
u$%


bonjour,

les variables "Public" ont une portée "module". Mais je voudrais
récupérer dans le module 2 une la valeur d'une variable du module 1.

Comment faire?

D'avance merci.

Bourby















Avatar
LSteph
Bonjour anonymousA,
Je suis cependant surpris si tu utilises cette instruction car on y fait
rarement appel
End me venait comme facteur de rmz0 des variables,

End est souvent pratique lorsqu'on utilise plusieurs sub et UserForms qui
s'appellent et que l'on veut tout annuler
y compris sortir d'une procèdure appelante.

Il ya réinitialisation..on va trouver d'où cela vient!
a+
lSteph

"anonymousA" a écrit dans le message de news:
4224e66f$0$3130$
L'instruction End a effectivement comme effet de réinitialiser les
variables y compris les variables publiques.
Je suis cependant surpris si tu utilises cette instruction car on y fait
rarement appel.

A+
Bonsoir,

mon problème pourrait bien venir de ces évènements, car mes variables
sont effectivements "vides", alors qu'elles ont eu une valeur un peu plus
tôt dans la même session.

Peut-on trouver une liste de ces évènements (pas trouvé dans l'aide, mais
je n'ai peut-être pas utilisé les bons critères dans ma recherche).

Et comment contourner ce problème? J'ai besoin que ça marche à tous les
coups...

Encore merci pour ton temps et celui de tous ceux qui répondent.

Bourby




LSteph wrote:

oupps... > (de l'application) du projet


"LSteph" a écrit dans le message de news:


Non , la portée est globale avec Public c'est à dire toute l'instance
de l'application
la réservation au module correspond à Private ou Dim entt de module.
mais certains événements comme une interruption de macro par End
remettent tout à Rien.

A+

"bourby" a écrit dans le message de news:


Bonsoir LSteph,

Oui, quand je fais un petit jeu d'essai, ça marche.
Mais, dans un vrai classeur, avec des macros plus évoluées, qui créent
un fichier nouveau, puis l'enregistrent et le ferment, avant de
revenir au classeur d'origine, j'ai assez souvent (mais pas à chaque
fois...) une difficulté avec ça: la valeur de mes variables publiques
(initialisées dans le module 1) n'est plus accessible dans le module
2.

L'aide d'Excel précise bien la portée : module (pas application).
J'aurais donc besoin d'une solution robuste (= qui marche à tous les
coups ...). Comment s'y prendre?

D'avance merci

Bourby



LSteph wrote:

Bonsoir,
Ben Si! cela va bien Public

lSteph
"bourby" a écrit dans le message de news:
u$%


bonjour,

les variables "Public" ont une portée "module". Mais je voudrais
récupérer dans le module 2 une la valeur d'une variable du module 1.

Comment faire?

D'avance merci.

Bourby



















Avatar
bourby
bonsoir,

ben non! Je n'utilise que End sub en fin de macro.

Pour être plus spécifique, dans l'auto_open, j'initialise la variable
publique monFichier=ThisWorkbook.Name (Il y a quelques jours,
SittingHoax m'a expliqué que ActiveWorkbook.Name n'était pas adéquat).
Je crée et je ferme plusieurs classeurs pendant la session; et j'importe
des données depuis d'autres classeurs, qui peuvent rester ouverts quand
je referme le classeur d'origine. En refermant ce classeur d'origine, je
veux déclencher, dans l'auto_close, une macro qui fasse un certain
nombre de traitements sur ce classeur. Et j'utilise
Workbooks(monFichier). C'est là que, une fois sur deux, ça plante:
"monFichier" est vide...

J'aimerais bien comprendre ce qui se passe.

Mais d'un autre côté, je me dis soudain que Thisworkbook, utilisé dans
l'auto_close, ce serait plus direct que tout mon code actuel ! !
Vrai ou faux? (mon classeur est au bureau).

Cordialement

Bourby





anonymousA wrote:
Extrait de l'aide d'Excel:

End Termine l'exécution immédiatement. Utilisée seule, cette instruction
n'est pas obligatoire. Elle peut être placée en tout point d'une
procédure pour mettre fin à l'exécution du code, fermer des fichiers
ouverts à l'aide de l'instruction Open et effacer des variables

Lorsqu'elle est exécutée, l'instruction End réinitialise toutes les
variables au niveau du module et toutes les variables locales statiques
dans tous les modules. Pour conserver la valeur de ces variables,
utilisez plutôt l'instruction Stop. Vous pourrez ainsi reprendre
l'exécution tout en préservant la valeur des variables.

Note L'instruction End met immédiatement fin à l'exécution du code,
sans appeler d'événement Unload, QueryUnload, ou Terminate, ou tout
autre code Visual Basic. Le code que vous avez écrit dans les événements
Unload, QueryUnload, et Terminate des feuilles et des modules de classe
n'est pas exécuté. Les objets créés depuis les modules de classe sont
détruits, les fichiers ouverts au moyen de l'instruction Open sont
fermés et la mémoire occupée par le programme est vidée. Les références
d'objet appartenant à d'autres programmes ne sont plus valides.

L'instruction End permet de forcer l'arrêt du programme. Pour qu'un
programme Visual Basic se termine normalement, vous devez décharger
toutes les feuilles. Votre programme se termine lorsqu'il n'y a plus
aucun programme maintenant des références à des objets créés depuis vos
modules de classe publics et qu'aucun code n'est exécuté.



tu utilises cette instruction ?



A+



Bonsoir,

mon problème pourrait bien venir de ces évènements, car mes variables
sont effectivements "vides", alors qu'elles ont eu une valeur un peu
plus tôt dans la même session.

Peut-on trouver une liste de ces évènements (pas trouvé dans l'aide,
mais je n'ai peut-être pas utilisé les bons critères dans ma recherche).

Et comment contourner ce problème? J'ai besoin que ça marche à tous
les coups...

Encore merci pour ton temps et celui de tous ceux qui répondent.

Bourby




LSteph wrote:

oupps... > (de l'application) du projet


"LSteph" a écrit dans le message de news:


Non , la portée est globale avec Public c'est à dire toute
l'instance de l'application
la réservation au module correspond à Private ou Dim entt de module.
mais certains événements comme une interruption de macro par End
remettent tout à Rien.

A+

"bourby" a écrit dans le message de news:


Bonsoir LSteph,

Oui, quand je fais un petit jeu d'essai, ça marche.
Mais, dans un vrai classeur, avec des macros plus évoluées, qui
créent un fichier nouveau, puis l'enregistrent et le ferment, avant
de revenir au classeur d'origine, j'ai assez souvent (mais pas à
chaque fois...) une difficulté avec ça: la valeur de mes variables
publiques (initialisées dans le module 1) n'est plus accessible
dans le module 2.

L'aide d'Excel précise bien la portée : module (pas application).
J'aurais donc besoin d'une solution robuste (= qui marche à tous
les coups ...). Comment s'y prendre?

D'avance merci

Bourby



LSteph wrote:

Bonsoir,
Ben Si! cela va bien Public

lSteph
"bourby" a écrit dans le message de news:
u$%


bonjour,

les variables "Public" ont une portée "module". Mais je voudrais
récupérer dans le module 2 une la valeur d'une variable du module 1.

Comment faire?

D'avance merci.

Bourby




















1 2