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 Discussion :

constructeur pour module de classe


Sujet :

VBA

  1. #1
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut constructeur pour module de classe
    Bonjour (encore moi!),
    je cherche à faire un constructeur pour un module de classe, malheureusement ça bloque (toujours à cause de tableaux!désolé j'ai un peu de mal avec ce truc! )
    je sais que les constructeurs n'existent pas par défaut en vb, je veux juste créer une méthode qui initialise un objet.
    voilà mon module de classe (doté pour simplifier ici juste d'un tableau à 2 entrées):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private CC() As Double
    Public Property Let C(ByRef cb() As Double)
            CC = cb
    End Property
     
    Public Property Get C() As Double()
                C = CC
    End Property
    voici ma méthode constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub linearconstraint( C() As Double)
     
            Me.C = C
     
    End Sub
    et voilà comment j'instancie mon objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim clin As linearconstraint
    Set clin = New linearconstraint
    clin.linearconstraint CM
    (CM est un tableau de double normal)
    et bien vous me croirez si vous voudrez , mais ça et ferme excel et VBE direct.

    Merci!

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    re bonjour,

    le nom de la classe correspond au nom du module de classe...

    Le constructeur est obligatoirement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub class_Initialize()
    ...
    End Sub
    Le destructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub class_Terminate()
    ...
    End Sub
    un excellent tuto pour tout savoir sur les classes VBA :
    http://sinarf.developpez.com/access/vbaclass/

    Philippe

  3. #3
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    merci pour ta réponse;
    le lien est effectivement très clair...
    Mais ne répond pas à mon problème. Oublions l'aspect constructeur, je voudrais juste comprendre pourquoi cette méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub lc( b as double, C() As Double)
            Me.b =  b
            Me.C =  C
    End Sub
    où b et C sont respectivement des propriétés de ma classe, double et double(), plante:
    je précise que l'instruction passe, c'est qui fait planter excel.
    par contre, un appel direct:
    clin.C marche (clin est une instance de ma classe).

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Essaye voir ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private CC() As Double
    Public Property Let C(ByRef cb)
            CC = cb
    End Property
     
    Public Property Get C() 
                C = CC
    End Property

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Points : 8
    Points
    8
    Par défaut
    Comme c'est un peu objet, quel est le résultat du set ci-dessous dans le let ?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    une différence évidente, toutes les procédures qui plantent attendent un argument tableau passé par valeur et par référence; ce qui n'est pas le cas de la property Let.

Discussions similaires

  1. créer un module de classe pour gérer un textbox
    Par Cybernard dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/06/2010, 19h48
  2. Réponses: 1
    Dernier message: 29/04/2008, 13h05
  3. Réponses: 3
    Dernier message: 01/06/2007, 11h12
  4. Réponses: 5
    Dernier message: 30/01/2007, 14h23
  5. [POO] Deux constructeurs pour une même classe
    Par amika dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2006, 17h31

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