voila j'ai créer une classe de gestion d'erreur qui viens m'écrire le tout dans un fichier
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Option Compare Database
Private oFichierlog
'-------------------------------------
'
'Classe erreur voir http://warin.developpez.com/access/erreur/tutoriel1/
'
'------------------------------------
Public Sub Instancier(strnomfichier As String)
On Error GoTo GestionErreur
'Instancie un objet FileSystemObject
Dim oFso As New FileSystemObject
'Ouvre le fichier texte en mode ajout
Set oFichierlog = oFso.OpenTextFile(strnomfichier, ForAppending, True)
oFichierlog.WriteLine " Nouvelle Instanciation le " & Now & " "
GoTo Fin
GestionErreur:
MsgBox "Impossible d'instancier le gestionnaire d'erreurs", vbCritical
Fin:
End Sub
Public Sub EnregistrerErreur(intErrNumber As Integer, _
ByVal strUser As String, strErrMessage As String, Optional strNomProc = "")
On Error GoTo GestionErreur
If Not oFichierlog Is Nothing Then
oFichierlog.WriteLine "[" & Now & "] Procédure : " & _
strNomProc & " Utilisé Par " & strUser & " -> Erreur N°" & intErrNumber & " :" & strErrMessage
MsgBox " nouvelle erreur généré dans le fichier log des erreurs"
Else
MsgBox "Le gestionnaire d'erreur n'est pas instancié", vbCritical
End If
GoTo Fin
GestionErreur:
MsgBox "Impossible d'écrire dans le fichier du gestionnaire d'erreur.", vbCritical
Fin:
End Sub
Public Sub Fermer()
Class_Terminate
End Sub
Private Sub Class_Terminate()
On Error GoTo GestionErreur
oFichierlog.Close
Set oFichierlog = Nothing
GestionErreur:
End Sub |
ceci est initialisé avec une macro exec qui me lance ceci
1 2 3 4 5 6 7 8 9 10 11 12
| Public oGestErreur As GestionnaireErreur
Global varUser As String
Public Function Macro_Autoexec()
Dim strLogFileName As String
x = Log_Demarrage("Initialisation du log des erreurs", 1)
'Récupère le nom du fichier de base de données et lui ajoute l'extension .log
strLogFileName = Left(CurrentDb.Name, Len(CurrentDb.Name) - 4) & ".log"
Set oGestErreur = New GestionnaireErreur
oGestErreur.Instancier strLogFileName
varUser = CurrentUser()
End Function |
Lors d'une erreur je fais donc ceci
oGestErreur.EnregistrerErreur err.Number, varUser, err.Description, "description de l'endroit"
cela fonctionne très bien mais parfois dans le vba des formulaires quand je l'appel ainsi il me met une erreur d’exécution " n 91 variable objet ou variable bloc with non définie "
des idées ?
Partager