Export classe VB

lebenn Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 14 décembre 2004 - 11 déc. 2004 à 19:20
lebenn Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 14 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 !!!

Merci
Adrien

5 réponses

Cramfr Messages postés 160 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 8 juillet 2008
13 déc. 2004 à 15:48
Tu n'as pas VB6
parce que dans ce cas là tu crée une Dll que tu appelles de ton code vb si tu change ta dll tu la change partout
Bye

Cramsoturf le VBien en quête de nouveau programme :big)
0
lebenn Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 14 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

End Class

encore merci d'avance !!!!
0
lebenn Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 14 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 ?
0
Cramfr Messages postés 160 Date d'inscription mercredi 24 novembre 2004 Statut Membre Derniè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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lebenn Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 14 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...

Adrien
0
Rejoignez-nous