Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Yaloo

XLDnaute Barbatruc
Bonjour à tous,

Je n'arrive pas à récupérer des variables d'un classeur (classeur1) dans l'UserForm1 du classeur2.

Bien que mes variables soient en Public, impossible de les récupérer dans mon UserForm.

Comment faire ?

Merci d'avance pour vos réponses.

Martial

PS : Enregistrer les 2 fichiers ci-joints, ouvrir Classeur1, puis modifier uniquement les données des cellules B1 à B3, cela lance la macro et l'ouverture du Classeur2.
 

Pièces jointes

  • Classeur1.xlsm
    21.9 KB · Affichages: 52
  • Classeur2.xlsm
    16.5 KB · Affichages: 53
  • Classeur1.xlsm
    21.9 KB · Affichages: 56
  • Classeur2.xlsm
    16.5 KB · Affichages: 54
  • Classeur1.xlsm
    21.9 KB · Affichages: 54
  • Classeur2.xlsm
    16.5 KB · Affichages: 62

Gelinotte

XLDnaute Accro
Re : Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Bonjour,

Je ne sais pas passer le contenu d'une variable d'un classeur à l'autre.
Mais on peut directement lire d'un un autre classeur.

Examine cela.

G
 

Pièces jointes

  • Classeur1.xlsm
    21.4 KB · Affichages: 67
  • Classeur2.xlsm
    15.1 KB · Affichages: 64
  • Classeur1.xlsm
    21.4 KB · Affichages: 71
  • Classeur2.xlsm
    15.1 KB · Affichages: 61
  • Classeur1.xlsm
    21.4 KB · Affichages: 65
  • Classeur2.xlsm
    15.1 KB · Affichages: 66

Dranreb

XLDnaute Barbatruc
Re : Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Bonsoir.
En changeant le nom du projet (qui est par défaut "VBAProject") du Classeur1 en un nom unique parmi tous les projets ouverts, il devient possible d'ajouter ce projet aux références du Classeur2. Il figure en effet alors dans la liste des références disponibles au même titre que les fournitures système. Les variables Public du Classeur1 seront dès lors connues dans Classeur2 au moins à condition de les faire précéder de son nom de projet et d'un point (ce que je fais toujours même si c'était facultatif, ce que j'ignore).
Voir toutefois si cette conséquence ne sera pas un inconvénient: le Classeur1 sera ouvert automatiquement à l'ouverture de Classeur2 et ne pourra plus être fermé jusqu'à fermeture de tout classeur le tenant en référence.
Cordialement.
 

Yaloo

XLDnaute Barbatruc
Re : Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Bonjour à tous les 2,

Désolé problème d'orage et de connexion Internet. Je vois, à l'instant, vos réponses.

Merci pour vos réponses, je vois ça dès que possible et vous tient au courant.

Il me semblait (d'après l'aide) que lorsque l'on déclarait une variable en Public, on pouvait la récupérer dans un autre classeur.

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.

Martial
 

Gelinotte

XLDnaute Accro
Re : Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Bonjour,

Oui, publiques entre les différentes macros des différentes modules et userforms ... dans un même classeur. :(

Sauf avec la façon de faire expliquée par Dranreb.

G
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Re,

Dans l'aide :

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.

dans toutes les applications, cela me semblait correspondre à tous les classeurs et documents de toutes les applications "Excel" "Word" "Access" etc...

Martial
 

Dranreb

XLDnaute Barbatruc
Re : Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Ça ne veut pas dire qu'il ne faut pas préfixer ces dites variables du nom du projet qui les contient. Car il est sûr que plusieurs projets peuvent avoir les mêmes !
Mais peut être n'est-il pas indispensable de les avoir en référence. À tester…
P.S. C'est un peu analogue aux modules de classe: les variables et procédures déclarées Public en sont respectivement des propriétés et des méthodes, et il faut les préfixer de l'instance de la classe pour les utiliser.
À +
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Récupérer une variable d'un classeur dans un UserForm d'un autre classeur

Bonsoir à tous,

Merci à vous 2, j'ai pu mettre en pratique.
J'ai pris la solution de Dranreb, car les variables changent de source, donc plus facile à gérer avec le changement du nom de projet et la référence à ce nom.

Martial
 

Discussions similaires