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

VBA Access Discussion :

Evénement associé à une classe


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut Evénement associé à une classe
    J'étais en train de regarder le papier sur les modules de classe par Michel Blavin.
    Tout fonctionnait pour le mieux jusqu'au moment où j'ai abordé la gestion de l'évènement

    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
    23
    Gestion de l'événement
     
    Private WithEvents mobjPerson As Person 'Provoque une erreur si placé ailleurs que
    										'dans un module de classe
     
    Private Sub mobjPerson_Completed()
        Debug.Print "l'Evénement Completed vient de se produire !"
    End Sub
     
    Sur Chargement (Load)
     
    Private Sub Form_Load()
        Debug.Print "chargement du formulaire frmPerson"
        Set mobjPerson = New Person
        With mobjPerson
            .Nom = "Blavin"
            .Prenom = "Michel"
            .DateNaissance = #9/14/1969#
            'ici se produit l'événement completed
            'Et ensuite seulement on affiche la msgbox suivante
            Debug.Print .Prenom & " " & .Nom & " a " & .Age & " ans."
        End With
    End Sub
    Je récupère comme message Attribut incorrect dans une procédure Sub ou Function
    et il se pointe sur WithEvents mobjPerson

    Je me demande où je dois mettre exactement les lignes:
    Private WithEvents mobjPerson As Person 'Provoque une erreur si placé ailleurs que
    'dans un module de classe

    Private Sub mobjPerson_Completed()
    Debug.Print "l'Evénement Completed vient de se produire !"
    End Sub


    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Salut !
    Citation Envoyé par AlexFred
    Je récupère comme message Attribut incorrect dans une procédure Sub ou Function
    et il se pointe sur WithEvents mobjPerson

    Je me demande où je dois mettre exactement les lignes:
    Private WithEvents mobjPerson As Person 'Provoque une erreur si placé ailleurs que dans un module de classe

    Private Sub mobjPerson_Completed()
    Debug.Print "l'Evénement Completed vient de se produire !"
    End Sub
    C'est écrit dessus !

    Tu dois mettre ce code dans un module de classe et pas dans un module standard.

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    Private WithEvents mobjPerson As Person
    est bien en début du module de code du formulaire, dans la partie des déclarations (Déclarations) ?

    A+

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut évènement associé à une classe
    toujours par rapport au papier Module de Classe ( Michel Blavin )
    Je m'en sort toujours pas
    Je vais essayer d'être plus clair

    actuellement, j'ai bien dans le code associé au formulaire contenant les 3 champs Nom Prenom et DateNaissance

    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
    23
    24
    25
    26
    Option Compare Database
    Option Explicit
    Private WithEvents mobjPerson As Person
     
     
    Private Sub Form_Open(Cancel As Integer)
     
    'Dim mobjPerson As New Person
    Debug.Print "chargement du formulaire frmPerson"
        Set mobjPerson = New Person
     
        With mobjPerson
            .Nom = "Blavin"
            .Prenom = "Michel"
            .DateNaissance = #9/14/1969#
            'ici se produit l'événement completed
            'Et ensuite seulement on affiche la msgbox suivante
            Debug.Print .Prenom & " " & .Nom & " a " & .Age & " ans."
        End With
    End Sub
     
     
    Private Sub Form_Unload(Cancel As Integer)
    Debug.Print "Libération du formulaire frmPerson"
        Set mobjPerson = Nothing
    End Sub
    D'autre part j'ai un module de classe Person
    et un module Appelperson

    Mais maintenant où placer les lignes suivantes:
    Private Sub mobjPerson_Completed()
    Debug.Print "l'Evénement Completed vient de se produire !"
    End Sub

    Dans un module de classe c'est à dire dans Person ou un autre module de classe
    J'ai essayé un peu dans tous les sens, mais cela ne marche toujours pas.
    Je ne fais que changer d'erreur

    la dernière étant mblnNom = True => variable no définie !!!!
    alors que la déclaration est au dessus

    En tous, merci déjà pour ces 2 premières réponses, mais apparemment, j'aurais besoin d'un peu plus de précision sur le fontionnement de cet évènement.

    Que dois t'il faire exactement.

    @plus

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Bonjour,

    Dans le module de classe Person, tu as certainement effacé les 3 "Get" des pptés Nom, Prenom et Date naissance et donc tu dois les insérer après les Let respectifs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Property Get Nom() As String
        Nom = mstrNom
    End Property
    ...
    L'evt mobjPerson_Completed est à mettre dans le module de ton form.

    Et aussi, dans les declarations du module de classe Person, ne pas oublier la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Event Completed()

    Bonne journée
    "Always look at the bright side of life." Monty Python.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut évènement associé à une classe
    cela marche

    En faite j'ai déplacé l'ensemble des lignes suivantes comme vous me l'avez suggéré
    dans le code du formulaire
    au lieu de les mettre dans le module de classe comme c'était indiqué sur le papier

    Private WithEvents mobjPerson As Person

    Private Sub mobjPerson_Completed()
    Debug.Print "l'Evénement Completed vient de se produire !"
    End Sub

    Voilà ce que l'on récupère dans la fenêtre éxécution ( debug.Print .... )

    'Libération du formulaire frmPerson
    'chargement du formulaire frmPerson
    'Evénement Initialize - Création d'un objet Person
    ' RaiseEvent Completed
    'l 'Evénement Completed vient de se produire !
    'xxxxx yyyyyyy a zz ans.

    Enfin, je suis bien content...
    Et encore merci à vous, sinon je jetais l'éponge pour cet évènement.

    Juste pour le plaisir de la compréhension, je me demande pourquoi il ne m'active plus à la fin l'évènement Terminate ?

    Sinon je vais essayer de faire la suite ...
    Ce papier est tout de même très bien.

  7. #7
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...pourquoi il ne m'active plus à la fin l'évènement Terminate ?
    Il l'active quand on ferme le formulaire.

    A+
    "Always look at the bright side of life." Monty Python.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut évènement associé à une classe
    a priori l'évènement Terminate est peut être activé au moment de la fermeture du formulaire, mais alors pourquoi je n'en ai pas une traçe dans la fenêtre éxécution.

    Libération du formulaire frmPerson ( c'est ce qui se passe uniquement à la fermeture du Formulaire )
    'chargement du formulaire frmPerson
    'Evénement Initialize - Création d'un objet Person
    ' RaiseEvent Completed
    'l 'Evénement Completed vient de se produire !
    'xxxxx yyyyyyy a zz ans.


    Mystère !!! car avant cette traçe apparaissait.

  9. #9
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    C'est provoqué lors du unload , vérifie que ton code est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Private Sub Form_Unload(Cancel As Integer)
        Debug.Print "Libération du formulaire frmPerson"
        Set mobjPerson = Nothing
    End Sub
    A+
    "Always look at the bright side of life." Monty Python.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut évènement associé à une classe
    Cela marche effectivement,
    j'avais pourtant la bonne procédure Unload, mais j'ai dû rever.

    En tout cas merci à tous

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

Discussions similaires

  1. [XSD] Binding et XSD associée à une classe Java "représentant un arbre"
    Par A.You dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 23/04/2012, 14h53
  2. Réponses: 5
    Dernier message: 06/07/2010, 16h33
  3. Associer une classe à une zone en MFC
    Par fog4000 dans le forum MFC
    Réponses: 1
    Dernier message: 22/06/2007, 14h11
  4. Attacher un Evènement dans une Class
    Par mr32 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/10/2006, 20h14
  5. [Hibernate] Mapper une classe association
    Par mauvais_karma dans le forum Hibernate
    Réponses: 16
    Dernier message: 25/01/2006, 12h34

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