OVH Cloud OVH Cloud

Module de classe

2 réponses
Avatar
Patrick
Bonjour,

J'ai créé un module de classe pour tous les rapports (j'en ai plusieurs
auxquels je souhaite appliquer les mêmes procédures). Quand un rapport est
ouvert une barre d'outils s'affiche et, normalement, quand il se ferme la
barre d'outils disparaît. Le problème est que la barre d'outil ne disparaît
pas.

Voici le code exécuté à l'ouverture d'un rapport :

Private Sub Report_Open(Cancel As Integer)
Set crReport = New clsReport
Set crReport.MyReport = Me
End Sub

où crRapport est la variable globale de type clsRapport, qui est la classe
que j'ai créée.

Dans le module de classe j'ai ceci (à titre indicatif):

Public WithEvents MyReport As Report

Private Sub Class_Initialize()
Call AddToolBar
End Sub

Private Sub MyReport_Close()
On Error Resume Next
CommandBars("Reports").Delete
On Error GoTo 0

DoCmd.Restore
Set crReport = Nothing
End Sub

Quand je ferme le rapport, la procédure MyReport_Close ne s'exécute pas.

Avez-vous une idée de la raison ?

Merci pour votre aide.

--
Patrick

2 réponses

Avatar
Raymond [mvp]
Ta barre d'outils étant ouverte sur Initialize il serait logique qu'elle
soit fermée sur Terminate, en pensant bien de faire un nothing de l'objet.
si c'est tout ce que tu as comme code, la création de cette classe ne me
parait pas franchement utile, surtout pour afficher une barre d'outils.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Patrick" a écrit dans le message de
news:eZu$B7%
Bonjour,

J'ai créé un module de classe pour tous les rapports (j'en ai plusieurs
auxquels je souhaite appliquer les mêmes procédures). Quand un rapport est
ouvert une barre d'outils s'affiche et, normalement, quand il se ferme la
barre d'outils disparaît. Le problème est que la barre d'outil ne
disparaît

pas.

Voici le code exécuté à l'ouverture d'un rapport :

Private Sub Report_Open(Cancel As Integer)
Set crReport = New clsReport
Set crReport.MyReport = Me
End Sub

où crRapport est la variable globale de type clsRapport, qui est la classe
que j'ai créée.

Dans le module de classe j'ai ceci (à titre indicatif):

Public WithEvents MyReport As Report

Private Sub Class_Initialize()
Call AddToolBar
End Sub

Private Sub MyReport_Close()
On Error Resume Next
CommandBars("Reports").Delete
On Error GoTo 0

DoCmd.Restore
Set crReport = Nothing
End Sub

Quand je ferme le rapport, la procédure MyReport_Close ne s'exécute pas.

Avez-vous une idée de la raison ?

Merci pour votre aide.

--
Patrick




Avatar
?Lo»Paris?
Patrick wrote:
Bonjour,

J'ai créé un module de classe pour tous les rapports (j'en ai
plusieurs auxquels je souhaite appliquer les mêmes procédures). Quand
un rapport est ouvert une barre d'outils s'affiche et, normalement,
quand il se ferme la barre d'outils disparaît. Le problème est que la
barre d'outil ne disparaît pas.

Voici le code exécuté à l'ouverture d'un rapport :

Private Sub Report_Open(Cancel As Integer)
Set crReport = New clsReport
Set crReport.MyReport = Me
End Sub

où crRapport est la variable globale de type clsRapport, qui est la
classe que j'ai créée.

Dans le module de classe j'ai ceci (à titre indicatif):

Public WithEvents MyReport As Report

Private Sub Class_Initialize()
Call AddToolBar
End Sub

Private Sub MyReport_Close()
On Error Resume Next
CommandBars("Reports").Delete
On Error GoTo 0

DoCmd.Restore
Set crReport = Nothing
End Sub

Quand je ferme le rapport, la procédure MyReport_Close ne s'exécute
pas.

Avez-vous une idée de la raison ?

Merci pour votre aide.


Bonjour Patrick,

Une petite doc pour que tu comprenne comment géré WithEvent dans VBA :

http://dotnetadvisor.net/doc/13276

C'est en anglais mais c'est assez facile à comprendre

Salutations
--
°Laurent°