IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-00] Transmission de dates ByRef - comportement étrange


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 44
    Par défaut [E-00] Transmission de dates ByRef - comportement étrange
    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 :
    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
    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
    Dim pEve As New_cEvenement
    ' cEvenement définie un membre Public m_dDateTraitement As Date
    dtpVersDate dtpTraitement, pEve.m_dDateTraitement
    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
    Dim d As Date
    dtpVersDate dtpTraitement, d
    d reçoit bien la valeur du DTPicker.

    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.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    Pourquoi ne pas faire une simple fonction?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function dtpVersDate(ByRef pDTCtrl As MSComCtl2.DTPicker) As Date
        If VarType(pDTPCtrl) = vbDate Then
            dtpVersDate = pDTPCtrl
        Else
            dtpVersDate = #12:00:00 AM#
        End If
    End Sub
    L'appel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pEve.m_dDateTraitement = dtpVersDate(dtpTraitement)
    Cordialement,

    Tirex28/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/10/2011, 11h05
  2. [Dates] comportement étrange de strtotime
    Par michelpartout dans le forum Langage
    Réponses: 2
    Dernier message: 10/10/2008, 10h40
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo