Utiliser eds variables d'un classeur à l'autre

Bonjour, j'aimerais savoir comment je fais pour utiliser des variables en passant d'un classeur à l'autre. Je m'explique: dans un classeur, je part une macro qui ouvre un classeur déjà existant dans lequel il y a des macros. Je veux pouvoir utiliser les macros du nouveau classeur qui s'ouvre mais en ayant toujours accès aux variables de mon autre classeur précédent. Toutes mes variables sont public.

Dans mon premier classeur, j'exécute ces lignes:

WB_Principal.Activate est mon premier classeur

ouvrir 2e classeur

WB_Secondaire.Activate est mon deuxième classeur

Application.Run "'Classeur2.xlsm'!main"

je veux pouvoir utiliser la variable (variable1) de mon premier classeur dans mon deuxième classeur.

J'ai essayé : WB_Principal.mapage.macellule.value, qui est la valeur de variable1

mais j'ai comme message dans mon 2e classeur que WB_Principal n'est pas déclaré donc il ne fait pas de lien avec mes variables de mon premier classeur.

Est-ce que cela se fait et si oui, comment?

merci de votre aide!

Bonsoir Infodes,

Perso pour ce genre de besoin, je passe par un fichier ".ini" dans lequel j'inscris les clés et valeurs requises

Ensuite lors du lancement du 2ème classeur, je lis ces valeurs

A+

Bonjour,

Le ini peu-t être une bonne solution.

Sinon ce n'est pas instinctif...

qq solutions proposées sur le site disparu Excelabo :

Comment passer une variable, déclarée comme publique dans un module normal d'un classeur, à un autre classeur ?

Tu as plusieurs solutions :

A) Il te faut déclarer une variable publique dans ton classeur "Principal" Ajouter une référence à ce classeur (dans l'éditeur VB Outils Références) dans chacun des classeurs pouvant utiliser cette variable. Mais il faut renommer le projet VBAProject du classeur 1, sinon il sera probablement impossible à référencer car son nom "VBAProject" entrera en conflit avec d'autres VBAProject apparaissant dans la liste, même si ceux-ci ne sont pas cochés.

B ) Si ta variable est déclarée "Public" dans un des modules feuille du classeur, il devient un objet de ce module de Classe et tu peux y faire référence directement dans un autre classeur "OUVERT" sans aucun intermédiaire. Comme ceci : ('La variable s'appelle Denis)

V = Workbooks("AutreClasseur").Worksheets("Feuil1").Denis

Cependant, cela signifie que chaque fois dans le classeur d'origine que tu voudras faire référence à la variable "Denis" dans ton code, tu devras la faire précéder du nom de son module de classeur :

a = Feuil1.Denis

et non de cette façon

a = Worksheets("Feuil1").Denis

C ) Tu peux mettre la valeur de la variable soit dans une cellule du classeur d'origine soit dans un "Nom" (du menu insertion / nom) et y faire référence directement.

Public Denis As Long sub OK()

Denis = 25

'Crée un nom "Den" qui prend la valeur de la variable Denis

ThisWorkbook.Names.Add "Den", Denis

end sub

'Pour récupérer la valeur de cette variable dans un autre classeur :

Dim V As Variant

V = Workbooks("AutreClasseur").Names("den")

V = Right(V, Len(V) - 1)

Ex:

'Classeur1

Sub test()

Dim varTest As Long

varTest = 7 ' initialiser la valeur avant .Names.Add

ThisWorkbook.Names.Add "test", RefersTo:=varTest, Visible:=False

End Sub

'Classeur2

Sub test()

Debug.Print Workbooks("Classeur1.xlsm").Names("test") ' retourne: "=7"

End Sub

ok merci, je vais regarder cela.

Rechercher des sujets similaires à "utiliser eds variables classeur"