Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2007, 18h27   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2004
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 68
Points : 14
Points : 14
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 :
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 :
1
2
3
4
5
Public Sub linearconstraint( C() As Double)
 
        Me.C = C
 
End Sub
et voilà comment j'instancie mon objet:
Code :
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!
hector2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 18h58   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 591
Points : 1 591
re bonjour,

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

Le constructeur est obligatoirement :
Code :
1
2
3
4
 
Private Sub class_Initialize()
...
End Sub
Le destructeur :
Code :
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
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 15h04   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2004
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 68
Points : 14
Points : 14
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 :
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).
hector2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 18h38   #4
Rédacteur

 
Avatar de Tofalu
 
Christophe Warin
Inscription : octobre 2004
Messages : 8 635
Détails du profil
Informations personnelles :
Nom : Christophe Warin
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 8 635
Points : 13 718
Points : 13 718
Essaye voir ainsi :

Code :
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
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 17h42   #5
Invité de passage
 
Homme Thomas FRANCAIS
Développeur .NET
Inscription : mars 2007
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme Thomas FRANCAIS
Âge : 35
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 : 4
Points : 4
Comme c'est un peu objet, quel est le résultat du set ci-dessous dans le let ?
tfrancais est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h19   #6
Membre Expert
 
Inscription : avril 2006
Messages : 1 050
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 050
Points : 1 230
Points : 1 230
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.
ilank est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h18.


 
 
 
 
Partenaires

Hébergement Web