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 :
et le pendant côté VBA :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
(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 ...
Quelqu'un a-t-il la solution ?
Merci
Partager