Bonjour,

Je suis en train de faire un test en VB6 qui va débouché à une intégration dans un programme que je suis en train d'effectuer.

Afin de comprendre la programmation objet et ses débouchés sur VB6, J'ai mis en œuvre un petit programme qui me permet simplement d'afficher des données résultant d'un tableau.

Je m'explique, j'ai un objet que j'ai appelé tabHoraire qui possède trois propriétés ainsi que trois événements. Ses propriétés sont JJMMAAAA qui représente la date, NumManager qui représente un numéro unique de manager et NomTranche qui représente le nom dune tranche horaire unique aussi.

Cependant, j'aurais besoin d'un objet pour chaque manager qui se situe dans une base de données. Etant donné que chaque Manager est identifié par un numéro unique, j'ai donc décidé de faire un tableau(numManager). Ceci dit, VB6 n'accepte pas les tableaux en tant qu'objet qui prend en compte des évènements. J'ai donc créé un tableau parallèle issus de la même classe qui serait instancié par l'objet évènementié.

Jusque là tout va bien, cependant, lorque j'effectue un set tabHoraireAff(0), le tableau est instancié même hors fonction. C'est assez difficile à expliquer et je pense que mon code vous en dira plus.

Mon formulaire
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
27
28
29
30
31
32
33
34
35
36
 
Option Explicit
 
Dim WithEvents tabHoraire As clsHoraire
Dim tabHoraireAff(10) As clsHoraire
 
Private Sub InitVariables()
    Set tabHoraire = Nothing
End Sub
 
Private Sub Form_Load()
    InitVariables
    Set tabHoraire = New clsHoraire
    tabHoraire.JJMMAAAA = "08/08/2008"
    tabHoraire.nom_tranche = "O"
    tabHoraire.num_manager = 2
Call Affiche(tabHoraire, 0, "O", 2, "08/08/2008")
Call Affiche(tabHoraire, 1, "C", 5, "09/08/2008")
    lbJJMMAAAA2.Caption = lbJJMMAAAA2.Caption & tabHoraireAff(1).JJMMAAAA
    lbNumManager2.Caption = lbNumManager2.Caption & tabHoraireAff(1).num_manager
    lbNomTranche2.Caption = lbNomTranche2.Caption & tabHoraireAff(1).nom_tranche
lbJJMMAAAA.Caption = lbJJMMAAAA.Caption & tabHoraireAff(0).JJMMAAAA
lbNumManager.Caption = lbNumManager.Caption & tabHoraireAff(0).num_manager
lbNomTranche.Caption = lbNomTranche.Caption & tabHoraireAff(0).nom_tranche
End Sub
Private Sub Affiche(ByVal tab_ho As clsHoraire, i As Integer, tranche As String, manager As Integer, JJMMAAAA As String)
tab_ho.nom_tranche = tranche
tab_ho.num_manager = manager
tab_ho.JJMMAAAA = JJMMAAAA
 Set tabHoraireAff(i) = tab_ho
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    Set tabHoraire = Nothing
    End
End Sub
Ma classe
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
27
28
29
30
31
32
33
34
35
 
Option Explicit
 
Private lJJMMAAAA As String
Private lnum_manager As Integer
Private lnom_tranche As String
 
Public Event JJMMAAAAAjout()
Public Event NumManagerAjout()
Public Event NomTrancheAjout()
 
Public Property Let JJMMAAAA(ByVal vdata As String)
lJJMMAAAA = vdata
RaiseEvent JJMMAAAAAjout
End Property
 
Public Property Get JJMMAAAA() As String
    JJMMAAAA = lJJMMAAAA
End Property
Public Property Let num_manager(ByVal vdata As Integer)
lnum_manager = vdata
RaiseEvent NumManagerAjout
End Property
 
Public Property Get num_manager() As Integer
    num_manager = lnum_manager
End Property
Public Property Let nom_tranche(ByVal vdata As String)
lnom_tranche = vdata
RaiseEvent NomTrancheAjout
End Property
 
Public Property Get nom_tranche() As String
    nom_tranche = lnom_tranche
End Property
Et voici ce que ça me donne :


Voila, le problème, c'est que même si la valeur est rentré dans affiche comme ByVal, la valeur 0 du tableau continue a changer en fonction de tab_ho.

Si vous avez une solution, cela pourrais m'aider grandement. Je vous remerci d'avance pour vos réponses

Albat90