Bonjour,
Voilà ce que j'essaye de faire :
Dans un classeur (classeur1), j'exécute du code VBA pour :
- Ouvrir un classeur2
- Dans le classeur1, exécuter des fonctions du classeur2
- Dans le classeur1, récupérer la valeur de certaines variables du classeur2
J'ai testé 2 méthodes pour le faire :
Dans le classeur1, créer une référence vers le classeur2 (dans Outils / Références). C'est assez pratique parce que je peux ensuite accéder à n'importe quelle fonction ou variable avec "var = Classeur2.nomFonction" ou "var = Classeur2.nomVariable".
Le problème, c'est que je n'arrive pas à charger dynamiquement le classeur2 dans le classeur1. J'ai bien essayé : Call ThisWorkbook.VBProject.References.AddFromFile(cheminClasseur2) mais ça fait une erreur à l'exécution qui m'empêche ensuite de débugger le code pas à pas
En plus, je ne sais pas comment accéder dynamiquement à la référence vers le classeur2, que je viens d'ajouter.
Autrement dit, ça marche bien quand je fais la manip manuellement dans Outils / Références, mais ça ne marche pas quand j'essaye de faire l'équivalent en code.
- 2) Avec "Application.Run"
La deuxième méthode, c'est d'utiliser des appels du type "var = Application.Run(Classeur2!nomFonction)". Ca marche bien pour les fonctions, mais je ne trouve pas de moyen simple d'accéder à la valeur des variables, à part évidemment en créant une fonction "get" pour accéder à chaque variable.
Le problème, c'est que j'ai une tonne de variables, et la flemme de créer un accesseur pour chacune. Est-ce qu'il n'y aurait pas une fonction d'un Workbook qui renvoie la valeur d'une variable en fonction de son nom ?
Un truc du type :
Code :
- Dim toto As Integer
- toto = 2
- valeurToto = ThisWorkbook.Value("toto" )
|
et que tout magiquement, ça fasse que valeurToto = 2.
Voilà, j'espère que mon problème est clair. Merci d'avance pour votre aide !