Récupérer le contenu d'une variable

  • Initiateur de la discussion Pat.bart
  • Date de début
P

Pat.bart

Guest
Bonjour à tous,

Je voudrais savoir comment récupérer le résultat d'une variable d'un module pour l'utiliser dans un autre module.

Merci d'avance.
 
P

Patrick

Guest
Tu peux aussi déclarer tes variables comme globales.
L'avantage, c'est que tu peux les récupérer dans tous les modules de ton projet sans les ré-initialiser ni les transmettre comme paramètres quand tu appelles un module à partir d'un autre.

Patrick
 
P

Pat.bart

Guest
Salut à tous les deux,

Pour Thierry
Cela ne fonctionne pas. Ce n'est pas dans un autre module que je veux récupérer le résultat de ma variable mais dans la procédure d'un Userform. Désolé pour le manque de précision.

Pour Patrick,
Comment déclarer des variables comme globale

@+ Pat.bart
 
T

Ti

Guest
si tu déclares une variable publique, tu peux l'utiliser dans n'importe quel module de ton projet, que ce soit un module standard, une feuille ou un userform. Si ça ne marche pas, c'est donc que tu déclares mal ta variable. Peut-être as-tu essayé de déclarer ta variable à l'intérieur du Userform ? Dans ce cas, si tu quittes le Usf par un Unload Me (j'ai pas mis le point ce soir Thierry :) ) alors, ta variable est automatiquement réinitialisée, c'est à dire que tu perds immédiatement sa valeur.
==> Remède : déclare ta variable dans un module standard et tu n'auras plus ce problème.
 
@

@+Thierry

Guest
Bonjour Pat, Patrick et Ti

Tiens, encore un "Cela ne fonctionne pas" :-(

Si tu fais exactement comme j'ai conseillé dans mon post du 02-05-03 18:30 et donc comme te la confirmé Ti le 02-05-03 19:43 il faut déclarer ta Variable dans un module standard (Exemple Module1) tu ne devrais pas avoir de problème de fonctionnement :
- Pour autant que cette déclaration soit faite avant et en dehors de toute procédure ou fonction
- Pour autant qu'après avoir déclaré ta Variable Public....... Tu l'initialises avant de l'utiliser (of course !! lol)

Voici ce que dit l'aide :
Public, instruction, exemple
Cet exemple utilise l'instruction Public au niveau module (section Général) d'un module standard pour déclarer de manière explicite des variables comme publiques, ce qui signifie qu'elles sont disponibles pour toutes les procédures de tous les modules de toutes les applications à moins que Option Private Module soit activée.

' Variable Integer de type Public.
Public Number As Integer
' Variable tableau de type Public.
Public NameArray(1 To 5) As String
' Plusieurs déclarations, deux de type Variant et une
' de type Integer, toutes Public.
Public MyVar, YourVar, ThisVar As Integer


Sinon pour la réponse de Patrick, On dirait que c'est juste pour embrouiller le poisson, car "Global" te retournera sur "Public, Instruction" dans l'aide VBA... Donc ce que nous t'avons expliqué au dessus... J'ai un peu l'impression qu'il n'y a pas de différence et que Global serait plutôt l'ancienne dénommination... Enfin corrigez moi si il y a une défférence !

J'ai retrouvé aussi un post de Laurent Longre qui dit ceci, qui m'apprend que l'on peut récupérer une variable déclarée Public dans un Private Module, celà peut s'avérer interressant dans certains cas de figures...


From: Laurent Longre (laurent.longre@free.fr)
Subject: Re: variable globale, public ...
Newsgroups: microsoft.public.fr.excel
Date: 2000/01/07

Pour utiliser une variable ou une constante accessible à partir de tous
les modules du classeur, il faut utiliser le mot-clé Public. La variable
ou constante doit être déclarée au niveau du module (pas à l'intérieur
d'une procédure ou d'une fonction).

Par exemple :

Public MaVariable As String
Public Const NotreDéesseATous As String = "Zaza"

S'il s'agit d'une variable déclarée dans un *module objet* (module de
feuille de calcul, ThisWorkbook, module de classe ou UserForm), il faut
"préfixer" la variable par le nom du module pour y accéder à partir d'un
autre module.

Par exemple, si tu déclares dans le module de la feuille de calcul
Feuil1 la variable suivante:

Public QuiEstLaPlusBelleEnCeMiroir As String

Dans les autres modules, il faudra utiliser
Feuil1.QuiEstLaPlusBelleEnCeMiroir pour accéder au contenu de cette
variable:

Feuil1.QuiEstLaPlusBelleEnCeMiroir = "Zaza"
MsgBox Feuil1.QuiEstLaPlusBelleEnCeMiroir

En revanche, à l'intérieur du module Feuil1, il n'y a pas besoin de ce
préfixe. Et ceci ne concerne que les modules objets, non pas les modules
standard.

Enfin, on ne peut pas définir de constantes *publiques* à l'intérieur de
modules objet, uniquement des variables.

Cordialement,

Laurent



Voilà du coup j'ai fait ma révision du Dimanche grace à ce fil :)

Bon Dimanche (super Beau ici)
@+Thierry


PS oui oui Ti pas pas le Point :)
 
T

Ti

Guest
pour compléter cette leçon de Thierry, j'ajouterai que Option Private Module est une option intéressante, car elle permet de cacher les variables du projet en cours aux autres projets (donc aux macros des autres fichiers). Mais cela n'empêche pas d'utiliser ces variables d'un module à l'autre dans un même projet. J'utilise très souvent Option Private Module pour cacher les variables d'un fichier depuis l'interface d'Excel, quand on clique sur "Outils...Macros".
Un conseil : laissez tomber Global, préférez-lui Public
 
@

@+Thierry

Guest
Merci Ti

Donc, tu confirmes Global => Excel4 => Donc, obsolete à cours/moyens termes.

Et penses-tu qu'avec Option Private Module on pourrait récupérer la variable comme le dit Laurent... c'est à dire on a mis le Standard Module1 en Option Private MOdule et donc dans un autre module on peut écrire ceci :

MsgBox Module1.QuiEstLaPlusBelleEnCeMiroir (pas testé...)

@+Thierry
 

Discussions similaires

Réponses
3
Affichages
184

Statistiques des forums

Discussions
312 755
Messages
2 091 716
Membres
105 056
dernier inscrit
David Primo