Echanger des données de type "Décimal" (Variant ou Object) entre vba Excel et une dll en vb.net
Bonjour,
J'ai un problème tout bête d'échanges de données décimales entre un développement dll effectué sous vb.net et Excel :
Le format décimal en vba est "Variant"
Normalement le format correspondant pour l'échange de données en vb.net est "Objet"
Quand il s'agit de récupérer des données de la dll vers Excel aucun problèmes, en revanche impossible de faire l'échange ensens inverse (de VBA vers la dll) :
Ci-joint un extrait du code vb.net :
Code:
1 2 3 4 5 6
| <ClassInterface(ClassInterfaceType.AutoDual), Serializable(), ComVisible(True)> _
Public Class Derive
Public Property Saison As Integer
Public Property DerPh1 As Object
Public Property DerPh2 As Object
End Class |
et le pendant côté VBA :
Code:
1 2 3 4 5 6 7 8 9
| Dim LesDerives As New Derives ' Collection d'Objets "Derive" initialisées dans la dll
Dim LaDerive As New Derive
MsgBox LesDerives(2013).DerPh1 ' La valeur décimale est correctement affichée sous Excel : dll => vba OK
LesDerives(2013).DerPh1 = -2.5 ' génrère un message d'erreur d'exécution '424' Objet requis : vba => dll NOK
LaDerive.Saison = 2013 'Instruction fonctionnant correctement (type Integer)
LaDerive.DerPh1 = -2.5 ' génrère un message d'erreur d'exécution '424' Objet requis |
J'ai bien essayer de passer par une variable déclarée en format Objet, d'ajouter Set devant l'affectation, de supprimer la déclaration de type dans la dll (As Object), de déclarer des sous fonctions Get et Set pour les propriétés mais j'avoue que je sêche !
(Si cela peut aider, quand je décline la property avec les 2 fonctions Get et Set, LaDerive.Saison = 2013 redirige bien vers la sous fonction "Set" de la propriété, en revanche LaDerives.DerPh1 redirige le code vers la sous Fonction "Get" de la propriété avant d'envoyer le message d'erreur ???)
Les mêmes lignes de codes intégrées dans la dll sous vb.net fonctionnent elles correctement :arf:...
Quelqu'un a-t-il la solution ?
Merci