Bonjour à tous,
Je viens en à nouveau en dernier recours demander de l’aide car je ne trouve pas de solution malgré mes recherches effectuées sur Google. Il y a une personne qui à posé la même question sur ce site que moi mais la solution proposée n'est pas complète (ou je ne sais pas l'appliqué).
Je reste un débutant en VBA, même si certains aspects sont assez compréhensible, d’autre le sont beaucoup moins.
J'ai un formulaire qui permet, évidemment, de remplir certaines données. A son ouverture je teste 2 choses:
- S'il l'entrée dans la table à une date.
- S'il n'y a pas de date, je vérifie si le numéro (dit "numéro d'arrivage") existe
S'il n'y a pas de numéro d'arrivage, alors j'affiche un MsgBox qui indique que le numéro n'existe pas.
Ensuite, j'aimerai qu'Access ferme automatiquent le formulaire après que cette box soit fermée.
Voici le code:
Et c'est là que ça coince, Access m'indique ""Impossible d'éxécuter cette action pendant le traitement d'un évènement de formulaire ou d'état" comme erreur. Bon, je comprends la phrase, c'est déjà ça !
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 Private Sub Form_current() Dim StDocName As String Dim MssgBox As Variant StDocName = "Administration" If Not IsNull(Me.Date_Modification) Then ElseIf Not IsNull(Me.N°_Arrivage) Then Me.Date_Modification.Value = Date Else: Beep MssgBox = MsgBox("Le numéro d'arrivage est inconnu!", vbOKOnly + vbExclamation, "Attention!") DoCmd.Close acForm, StDocName End If End Sub
Alors, j'ai essayé de faire appel à une fonction en faisant :
La fonction se trouve dans un module :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 If Not IsNull(Me.Date_Modification) Then ElseIf Not IsNull(Me.N°_Arrivage) Then Me.Date_Modification.Value = Date Else: Beep MssgBox = MsgBox("Le numéro d'arrivage est inconnu!", vbOKOnly + vbExclamation, "Attention!") Call ForceClose End If
Mais là, même message d’erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Function ForceClose() Dim StDocName As String StDocName = "Administration" DoCmd.Close acForm, StDocName End Function
Donc, si je comprends bien, il faut attendre que l’ouverture finisse avant de vouloir fermer le formulaire. Ok, mais comment faire ?
Quelqu'un parlait d'un "DoEvents" mais je ne sais pas comment l'appliquer et où?
Merci d’avance
Partager