Bonjour,
j'observe un comportement étrange dans la transmission de dates à une procédure.
Soit un DTPicker avec Checkbox dans un formulaire (il vaut Empty s'il n'est pas coché sinon il vaut la date sélectionnée) situé dans un fichier .xls . Ce formulaire utilise des objets, notamment une classe cEvenement définie dans une bibliothèque d'objets extérieure (un fichier .xla) au projet en cours mais connue comme référence (jusque là rien d'anormal.)
Soit la procédure suivante définie dans un module du fichier xls :
Soit le code situé dans le formulaire qui appelle cette procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public Sub dtpVersDate(ByRef pDTCtrl as MSComCtl2.DTPicker, ByRef dVarDate As Date) If VarType(pDTPCtrl) = VbDate Then dVarDate = pDTPCtrl Else dVarDate =#12:00:00 AM# End If End Sub
Après cette ligne pEve.m_dDateTraitement n'est toujours pas initialisée, ce n'est pas normal. en débuggant la procédure, l'affectation se fait bien mais le changement n'est pas propagé à la variable Date malgré le ByRef explicite. Si j'écris :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim pEve As New_cEvenement ' cEvenement définie un membre Public m_dDateTraitement As Date dtpVersDate dtpTraitement, pEve.m_dDateTraitement
d reçoit bien la valeur du DTPicker.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim pEve As New_cEvenement Dim d As Date dtpVersDate dtpTraitement, d
Si enfin j'écris le test sans appeler la procédure, l'affectation de pEve.m_dDateTraitement se fait bien. Je ne comprends pas pourquoi la transmission directe par référence du membre de type Date ne permet d'en modifier la valeur.
A quoi cela serait du? Auriez-vous idée?
Merci.
EDIT/ précision : Excel 2000, fichier xls partagé mais pas le xla, les deux sur un serveur.
Partager