lebenn
Messages postés4Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention14 décembre 2004
-
11 déc. 2004 à 19:20
lebenn
Messages postés4Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention14 décembre 2004
-
14 déc. 2004 à 15:54
j'aimerai utiliser une classe en VB/VBA dans plein de feuilles excel, et j'aimerai éviter de copier systematiquement le module ou la classe est définie dans toutes les feuilles (pour des questions de maintenance evidente). Quel est le plus simple a faire ? Impossible d'exporter des classes d'une xla visiblement, je m'oriente vers du VB .net mais je suis completement debutant... Le COM a l'air adapté mais j'arrive pas a faire marcher le CreateObject ! Help !!!
lebenn
Messages postés4Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention14 décembre 2004 14 déc. 2004 à 08:34
Merci Cramfr pour la reponse !
J'ai effectivment cree une DLL en VB avec .net (une classe COM object) que j'importe avec CreateObject dans le VBA de toutes mes feuilles excel. Le probleme c'est que certaines choses que je faisais dans cette classe en VBA ne sont pas faisable en VB :
- appel d'une XLL (avec RegisterXLL et Application.Run)
- Objet Range en input
Ces 3 objets (RegisterXLL Application et Range) existe en VBA et pas en VB, quel est le plus simple pour les remplacer ?
Ci-joint une classe exemple de ce que j'aimerai exporter d'une DLL, la fonction "ADD" etant une fonction de la XLL xllAddition.xll :
Public Class ComClass1
Public Sub New()
MyBase.New()
End Sub
Public Function test(ByVal a As Range) As Double
res = Application.RegisterXLL("xllAddition.xll")
test = application.run("ADD", a.cells(2, 2).value)
End Function
lebenn
Messages postés4Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention14 décembre 2004 14 déc. 2004 à 08:39
Evidemment au lieu d'appeler du VBA une DLL en VB qui appelle une XLL en C++ pour additionner 2 valeurs je pourrai faire "=A1+A2" dans une cellule... C'est juste un cas d'ecole of course cet exemple.
Et puis une petite question supplementaire : comment avoir accés aux methodes d'une classe VB d'un object COM utilisé dans le VBA avec CreateObject ?
Cramfr
Messages postés160Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention 8 juillet 2008 14 déc. 2004 à 13:49
Ok je comprends le problème
Et si pour tout tes fichiers excel tu ouvres aussi un autre fichier excel identique pour tous qui possède ce module.
A ce moment là, tu n'as plus besoin de faire référence à une DLL.
Car il est vrai que c'est un peu complexe...
Fichier1.xls (Application 1)
Fichier2.xls (Application 2)
Fichier3.xls (Application 3)
Fichier4.xls (Module ouvert pour chaque application)
une idée comme çà...
Mais Avec VB si tu mets des références Microsoft Excel tu dois pouvoir faire référence à une application... Enfin sans certitude...
A+
Cramsoturf le VBien en quête de nouveau programme :big)
Vous n’avez pas trouvé la réponse que vous recherchez ?
lebenn
Messages postés4Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention14 décembre 2004 14 déc. 2004 à 15:54
l'idee d'un module commun est bonne, mais le probleme c'est qu'on ne peut pas utiliser une classe VBA definie dans un workbook a partir d'un autre workbook... Les fonctions OK mais pas les classes...
Enfin merci pour les elements de reponse, ca n'a pas l'air si simple que ca en fait...