Bonjour,

Je cherche une information au niveau des classes en VBA excel.

Mon cas :

Je crée un module de classe simple (contenant uniquement un constructeur et un destructeur) qui se nomme CBook:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
' Module de classe "CBook"
' Constructeur
Private Sub class_initialize()
End Sub
 
' Destructeur
Private Sub class_terminate()
End Sub
Je crée dans un module une variable globale de ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public book = new CBook
J'initialise à l'ouverture du classeur et je détruit à la fermeture du classeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Workbook_Open()
 
    Set book = Nothing
    Set book = New CBook
 
End Sub
 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
    Set book = Nothing
 
End Sub
Est-ce une pratique correcte sur vba excel ?
Si c'est correct, j'ai un problème car en cours d'utilisation d'excel l'objet "book" se perd tout seul en cours de route sans appeler son destructeur (j'ai mis un msgbox dans le destructeur pour être sur) et provoque une erreur.
Qu'est-ce qui fait (quel événement peut se produire pour) qu'un objet contenant une classe de détruise tout seul sans appeler le destructeur ?

Merci par avance pour votre aide

Romain