outofbusiness
Messages postés36Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention 4 juin 2009
-
10 avril 2007 à 00:31
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
11 avril 2007 à 00:41
bonjour,
dans mon module, je voudrais récupérer une variable (sa valeur) de type string provenant d'un autre module.
est ce que cela est possible ?
si oui, comment s'il vous plait ??
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 10 avril 2007 à 00:45
Salut,
oui, c'est possible, pour cela, il faut déclarer dans ton module la variable de type Public, dans les déclarations de ton module (au dessus de tous tes codes)
outofbusiness
Messages postés36Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention 4 juin 2009 10 avril 2007 à 10:02
salut !
merci pour ta réponse.
malheureusement ca ne marche pas :-(
enfin ce que tu as écrit marche très bien, mais appliqué à ce que je veux faire, ça ne marche pas .
en fait, j'ai un module 1 avec la procédure qui suit :
sub test()
Application.Dialogs(xlDialogOpen).Show
var = ActiveWindow.Caption
'je demande de saisir un fichier excel et je voudrais garder son nom dans la variable var
end sub
et dans le module 2 :
sub test2()
Call Module1.test
Windows(var).Activate
end sub
voila, cad que je voudrais ainsi pouvoir, dans le module 2, activer le classeur dont le nom a été stocké dans la variable var, car après ouverture de ce fichier, on peut etre amené a ouvrir d'autres classeurs, et réactiver celui-ci (var) ensuite.
merci dsi vous pouvez m'aider à trouver une solution :-)
outofbusiness
Messages postés36Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention 4 juin 2009 10 avril 2007 à 10:10
en ce truc marche si je mets tout ce code au sein d'une meme procédure dans un meme module.
mais j'aurais besoin de mettre mon code dans 2 modules comme dit dans le post précédent.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 avril 2007 à 11:46
Et où est-ce que tu déclares tes variables ? et de quelle façon ?
Utilises-tu Option Explicit ? sinon, tu devrais.
Est-ce qu'on parle de Modules standards ou modules de Forms (voire feuilles) ou de classes ?
MPi
Vous n’avez pas trouvé la réponse que vous recherchez ?
outofbusiness
Messages postés36Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention 4 juin 2009 10 avril 2007 à 12:00
salu MPi !
oui j'utilise le Option Explicit. d'ailleurs il figure par défaut.
je déclare les variables entre le option explicit et la procédure.
la variable je la déclare public comme m'a conseillé mortalino
je parle de modules standard, la ou on crée les procédures (pas de sheets ni de user forms)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 avril 2007 à 12:12
Ça devrait alors fonctionner, à moins que la variable Var soit déclarée aussi dans la procédure (ou peut-être dans le code de la Form). À ce moment c'est cette dernière qui serait prioritaire...
outofbusiness
Messages postés36Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention 4 juin 2009 10 avril 2007 à 13:43
non, ca ne fonctionne pas :-(
avec ca (ci-dessous) dans un meme module, ca marche, mais je voudrais écrire dans 2 modules, comme décrit dans mon post précédent :
en faisant pas à pas, j'ai l'impression que l'on perd la valeur de nom lorsque l'on revient dans le module1 depuis le module2. du coup, j'ai un message d'erreur, vu que la variable nom du module1 ne contient rien :-~
Option Explicit
Public nom As String
Sub test()
Application.Dialogs(xlDialogOpen).Show
nom = ActiveWindow.Caption
Application.Dialogs(xlDialogOpen).Show
' ici on a ouvert un autre classeur, qui devient alors le classeur actif
Windows(nom).Activate
'le classeur ouvert en premier lieu, dont le nom a été dans la variable string nom est activé maintenant.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 11 avril 2007 à 00:41
Si c'est pour te promener d'un classeur à un autre à l'aide de variable, peut-être pourrais-tu essayer en déclarant des variables-objets As WorkBook
Du genre
Option Explicit
Public SourceProg as Workbook, DestProg as Workbook
Sub Test
Set SourceProg = ActiveWorkbook
Application.Dialogs(xlDialogOpen).Show
Set DestProg = ActiveWorkbook
' et là tu peux te promener d'un à l'autre
SourceProg.Activate
....
End Sub