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

10 réponses

1 2
Avatar
LSteph
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
bonsoir,

les variables Public ont une portée projet et non seulement module.Ce
sont les variables déclarées comme dim dans un module (déclarées en
section déclaration du module) qui ont une portée module.
Par ailleurs, une fois déclarées Public, les variables conservent leurs
valeurs jusqu'à la fermeture du fichier sauf si on les réinitialise bien
sur.

A+

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
isabelle
bonjour bourby,

l'extrait de l'aide est contradictoire à ce que tu affirme,

Remarques
Les variables déclarées avec l'instruction Public sont accessibles à
toutes les procédures, dans l'ensemble des modules de toutes les
applications, à moins que Option Private Module ne soit activé. Dans ce
cas, les variables ne sont publiques qu'au sein du projet qui les accueille.

Attention L'instruction Public ne doit pas être utilisée dans un
module de classe pour déclarer une variable chaîne de longueur fixe.

isabelle


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
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 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
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
re,

les variables déclarées Public ou autres sont attachées aux fichiers et
les espaces mémoires qui leur sont réservés sont dépendants des fichiers
qui les abritent.
Il n'y a donc que la fermeture des fichiers hôtes pour les liberer
totalement.
Par ailleurs, si tu veux utiliser avec un autre projet (projet2) une
variable qui appartient à un projet (projet1), il te faut faire un lien
via Outils/références au Projet1, un peu comme quand tu utilises une DLL
d'une bibilothèque existante que tu trouves dans Outils/Références.

En conséquence, il n'y a aucune raison en dehors d'agissements d'une
déclaration particulière avec un lien via Outils/références pour que à
l'ouverture et la fermeture d'un fichier X , on agisse sur les variables
d'un fichier Y , fussent-elles déclarées Public.

La solution est à chercher dans la solidité du code .

A+

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
avec XP, tu veux dire avec Excel 2003 ? car moi j'ai Excel 2000 avec XP
chez moi et avec NT au bureau et les mêmes règles s'appliquent. Par
ailleurs, je peux te garantir qu'au moins jusqu'à Excel 2002, l'affaire
est la même ( extrait du livre de Rob Bovey and co sur Programmer en
Excel 2002) .
enfin, indépendamment de tout ça , je vois mal MS changer une pratique
qui somme toute tient plus du fondamental en informatique que de la version.

A+

isabelle wrote:
bonsoir Anonymous et Isabelle,

merci de vos réponses. A la maison, avec Excel 2000, je trouve
effectivement dans l'aide le texte que vous avez recopié dans vos réponses.

Mais au bureau, avec XP, et sauf erreur de ma part, c'est une autre
chanson... j'ai décrit le problème de manière un peu plus détaillée dans
un autre post sur le même fil.

Je dois livrer mon classeur à des collègues Vendredi; tout marche bien,
sauf cette histoire de variables publiques, qui se perdent parfois en
chemin.... Si je n'ai pas de solution fiable, je créerai une feuille
cachée avec des plages nommées pour y inscrire mes valeurs sans les
perdre; mais ce n'est pas glorieux !

Si quelqu'un peut m'aider, ce sera donc avec plaisir.

Bourby


bonjour bourby,

l'extrait de l'aide est contradictoire à ce que tu affirme,

Remarques
Les variables déclarées avec l'instruction Public sont accessibles à
toutes les procédures, dans l'ensemble des modules de toutes les
applications, à moins que Option Private Module ne soit activé. Dans
ce cas, les variables ne sont publiques qu'au sein du projet qui les
accueille.

Attention L'instruction Public ne doit pas être utilisée dans un
module de classe pour déclarer une variable chaîne de longueur fixe.

isabelle


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
isabelle wrote:
bonsoir Anonymous et Isabelle,

merci de vos réponses. A la maison, avec Excel 2000, je trouve
effectivement dans l'aide le texte que vous avez recopié dans vos réponses.

Mais au bureau, avec XP, et sauf erreur de ma part, c'est une autre
chanson... j'ai décrit le problème de manière un peu plus détaillée dans
un autre post sur le même fil.

Je dois livrer mon classeur à des collègues Vendredi; tout marche bien,
sauf cette histoire de variables publiques, qui se perdent parfois en
chemin.... Si je n'ai pas de solution fiable, je créerai une feuille
cachée avec des plages nommées pour y inscrire mes valeurs sans les
perdre; mais ce n'est pas glorieux !

Si quelqu'un peut m'aider, ce sera donc avec plaisir.

Bourby


bonjour bourby,

l'extrait de l'aide est contradictoire à ce que tu affirme,

Remarques
Les variables déclarées avec l'instruction Public sont accessibles à
toutes les procédures, dans l'ensemble des modules de toutes les
applications, à moins que Option Private Module ne soit activé. Dans ce
cas, les variables ne sont publiques qu'au sein du projet qui les
accueille.

Attention L'instruction Public ne doit pas être utilisée dans un
module de classe pour déclarer une variable chaîne de longueur fixe.

isabelle


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
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