Bonjour,

Je vous expose un problème très bizarre que je rencontre dans une appli en vb.net. Il s'agit d'une dll de calcul qui est ensuite appelé par un programme en Vb6.
Le problème se situe au sein même de la dll.
J'ai une classe cCalcul qui a des propriétés codé classiquement de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Class cCalcul
Private mvarcValeurTotale As Double
Private mvarcFacteur As Double
 
Public Property cValeurTotale() As Double
Get
mvarcValeurTotale = cValeurTotale
End Get
Set(ByVal Value As Double)
mvarcValeurTotale = Value
End Set
End Property
 
Public Property cFacteur() As Double
Get
mvarcFacteur = cFacteur
End Get
Set(ByVal Value As Double)
mvarcFacteur = Value
End Set
End Property
End Class
Dans mon code je déclare un objet cCalcul
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Dim toto As cCalcul
Set toto = New cCalcul
Et j'affecte les valeurs en fonction d'un calcul réalisé ailleurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
With monResultat
toto.cFacteur = .Facteur.Value
toto.cValeurTotale = .Total.Value
End With
Si j'affiche monResultat.Facteur.Value et toto.cFacteur j'ai la même valeur, normal.
Et o miracle :
Si j'affiche monResultat.Total.Value j'ai une valeur alors que quand j'affiche toto.cValeurTotale j'ai 0 à chaque fois.

Je comprend vraiment pas comment c'est possible.
Même si je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
toto.cValeurTotale = 10
Msgbox toto.cValeurTotale
J'obtiens encore 0.

J'ai Option Explicit On pour la classe et le module qui l'utilise.
J'ai Option Strict On seulement pour la classe.

Le problème c'est que pour débogguer c'est pas facile vu que c'est une dll. Je ne peut pas mettre d'espions ou des points d'arrêts. A moins que quelqu'un m'explique comment faire.

Merci de vos suggestions.