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 12/05/2011, 12h09   #1
Futur Membre du Club
 
Grégory MARTIN
Inscription : mars 2010
Messages : 72
Détails du profil
Informations personnelles :
Nom : Grégory MARTIN

Informations forums :
Inscription : mars 2010
Messages : 72
Points : 17
Points : 17
Par défaut Passer l'instance courante en paramètre d'une fonction

Bonjour,

Je débute en VBA et j'aimerais savoir s'il y a moyen d'appeler une méthode dans Class2 à partir de Class1 en passant à la méthode la référence de l'objet Class1 qui l'appelle.

Y a-t-il en VBA un mot-clé qui remplacerait le "this" de Java ?

Où dois-je faire ceci:

Code de Class1:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private pMyReference As Class1
Private pC2 As Class2
 
Public Property Set C2(cl2 as Class2)
    Set pC2 = cl2
End Property
 
Public Property Set MyReference(c1 As Class1)
   Set pMyReference = c1
End Property
 
Public Sub AppelleC2()
    Set o = pC2.M(pMyReference)
End Sub
Public Sub Salut()
    MsgBox "Salut !"
End Sub
Code de Class2
Code :
1
2
3
4
5
Public Function M(c1 As Class1) As Object
    Set M = New RegExp
    M.Pattern = "Salut !"
    c1.Salut
End Function
Code de la Macro principale:
Code :
1
2
3
4
5
6
7
Sub Macro1()
    Dim c1 As New Class1
    c1.MyReference = c1
    Dim cl2 As New Class2
    c1.C2 = cl2
    c1.AppelleC2
End Sub
sunlover est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 01h00   #2
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Class1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private pC2 As Class2
 
Public Sub AppelleC2()
    Set o = pC2.M(Me)
End Sub
Public Sub Salut()
    MsgBox "Salut !"
End Sub
Private Sub Class_Initialize()
    Set pC2 = New Class2
End Sub
Private Sub Class_Terminate()
    Set pC2 = Nothing
End Sub
Class2
Code :
1
2
3
Public Function M(c1 As Class1) As Object
    c1.Salut
End Function
Procédure principale
Code :
1
2
3
4
Sub Macro1()
    Dim c1 As New Class1
    c1.AppelleC2
End Sub
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 10h26   #3
Futur Membre du Club
 
Grégory MARTIN
Inscription : mars 2010
Messages : 72
Détails du profil
Informations personnelles :
Nom : Grégory MARTIN

Informations forums :
Inscription : mars 2010
Messages : 72
Points : 17
Points : 17
Merci
sunlover est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h34.


 
 
 
 
Partenaires

Hébergement Web