Voilà cela fait un petit moment que je cherche d'où vient mon problème et et n'ai pas trouvé de solution alors j'espère que quelqu'un pourra m'aider =). Merci d'avance.
Je suis assez novice en VBA mais j'ai des base en programmation Orienté objet.
Donc sous VBA j'ai créé 2 nouvelles classes : Site qui est composé de diverse propriétés (qui sont des String et Double) et Lien qui est composé de string et de Site.
alors ma question c'est donc est-ce que j'ai besoin de dire au début de ma classe Lien que ma classe Site existe ?
Car quand j'essaye de créer un Lien dans une subroutine (dans un module) j'ai une erreur d'éxecution 91.
Merci d'avance pour votre aide (N'hésitez pas à me faire des remarque sur la clarté de mon code ^^, je suis preneuse des conseils pour m'améliorer =))
au cas où je vous met la définition de mes deux classes et la subroutine que j'utilise :
Classe Site
Option Explicit
'---------------------------------------
'Classe Site
'---------------------------------------
'Création des propriétés propre à la classe
Private sNom_Theo As String 'Nom Théorique du site
Private sNom_SI As String 'Nom SI du site
Private dX_Lamb As Double 'X en Lamert II étandu (coordonnée utilisée par Bytel)
Private dY_Lamb As Double 'Y en Lamert II étandu (coordonnée utilisée par Bytel)
Private sX_GE As String
Private sY_GE As String
Private sDescription As String
'Lecture et modification des propriétés de la classe
Public Property Get Nom_Theo() As String
Nom_Theo = sNom_Theo
End Property
Public Property Let Nom_Theo(ByVal vNewValue As String)
sNom_Theo = vNewValue
End Property
Public Property Get Nom_SI() As String
Nom_SI = sNom_SI
End Property
Public Property Let Nom_SI(ByVal vNewValue As String)
sNom_SI = vNewValue
End Property
Public Property Get X_Lamb() As Double
X_Lamb = dX_Lamb
End Property
Public Property Let X_Lamb(ByVal vNewValue As Double)
dX_Lamb = vNewValue
End Property
Public Property Get Y_Lamb() As Double
Y_Lamb = dY_Lamb
End Property
Public Property Let Y_Lamb(ByVal vNewValue As Double)
dY_Lamb = vNewValue
End Property
Public Property Get X_GE() As String
X_GE = sX_GE
End Property
Public Property Get Y_GE() As String
Y_GE = sY_GE
End Property
Public Property Get Description() As String
Description = sDescription
End Property
Public Property Let Description(ByVal vNewValue As String)
sDescription = vNewValue
End Property
Classe Lien
Option Explicit
'---------------------------------------
'Classe Lien
'---------------------------------------
'Création des propriétés propre à la classe
Private sId_Lien As String 'Nom du Lien
Private pSite_A As Site
Private pSite_B As Site
Private sDescription As String
'Lecture et modification des propriétés de la classe
Public Property Get Id_Lien() As String
Id_Lien = sId_Lien
End Property
Public Property Let Id_Lien(ByVal vNewValue As String)
sId_Lien = vNewValue
End Property
Public Property Get Site_A() As Object
Site_A = pSite_A
End Property
Public Property Set Site_A(ByVal vNewValue As Object)
pSite_A = vNewValue
End Property
Public Property Get Site_B() As Object
Site_B = pSite_B
End Property
Public Property Set Site_B(ByVal vNewValue As Object)
pSite_B = vNewValue
End Property
Public Property Get Description() As String
Description = sDescription
End Property
Public Property Let Description(ByVal vNewValue As String)
sDescription = vNewValue
End Property
et enfin ma sub :
Sub testSite()
Dim Site_1 As Site 'création du pointeur vers l'objet
Set Site_1 = New Site
With Site_1
.Nom_Theo = "T83788"
.X_Lamb = 845633
.Y_Lamb = 2136685
.Description = "z szd"
End With
Dim Site_2 As Site
Set Site_2 = New Site
With Site_2
.Nom_Theo = "T79924"
.X_Lamb = 845633
.Y_Lamb = 2136685
.Description = ""
End With
Dim FH1 As Lien
Set FH1 = New Lien
FH1.Id_Lien = "FH test"
FH1.Site_A = Site_1 ' quand je fais le mode pas à pas l'erreur est ici lors de l'appel du Get Sit_A() As Object
FH1.Site_B = Site_2
Debug.Print Site_1.Nom_Theo; " coordonnées : "; Site_1.X_Lamb; " "; Site_1.Y_Lamb
Debug.Print Site_2.Nom_Theo; " coordonnées : "; Site_2.X_Lamb; " "; Site_2.Y_Lamb
Debug.Print FH1.Id_Lien
'ma dernière ligne n'est pas complète mais mon l’exécution plante avant
End Sub