Bonjour,

J'essaie de cloner le recordset d'un sous-formulaire (au départ du formulaire principal) et sur l’événement Unload du formulaire principal.
Le but étant de vérifier avant le Close, si 3 champs sont bien remplis (on peut les laisser vides tous les trois mais pas 1 ou 2 sur 3).
Mon code:

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
37
38
Private Sub Form_Unload(Cancel As Integer)
Dim Db As DAO.Database
Dim rst As DAO.Recordset
Dim nbr As Long
 
Set Db = CurrentDb()
 
Set rst = Me.sf_AjoutEvaluation.Form.RecordsetClone 'on duplique le jeu d'enregistrements du sous-formulaire afin de manipuler les données sans que ces modifications ne soient répercutées sur le formulaire et sans qu'aucun évènement ne soit déclenché.
 
If Not rst.EOF Then
    rst.MoveLast
    rst.MoveFirst
    nbr = rst.RecordCount
End If
 
Debug.Print nbr & " --- "
 
' On verifie que les lignes restantes ont bien des données dans les 3 champs importants du sous-formulaire: NumDossierJustificatif, EvaluateurID, ResultatEvaluation
' on teste chacun des enregistrements, ceux qui ont les trois champs importants vides, on les laisse ainsi, ce n'est pas un soucis, il seront éliminer lors du Close
' Pour ceux qui ont au moins un des trois champs importants non nul, et un ou les deux autres null, on affiche alors un message ET on annule la fermeture du formulaire
 
Do While rst.EOF = False
    If IsNull(rst.txt_EvalNumDossierJustif) And IsNull(rst.ResultatEvaluation) And IsNull(rst.txt_EvaluateurID) Then
        'si les 3 champs sont null on ne fait rien, on passe à l'enregistrement suivant
        rst.MoveNext
    Else    'au moins un des trois champs n'est pas null
        ' on affiche un message comme quoi les trois champs doivent être remplis
        'et on annule la fermeture du formulaire
        MsgBox "Pour les enregistrements que vous venez d'encoder," & Chr(13) & Chr(10) & _
        "veuillez remplir obligatoirement TOUS les champs suivants: " & Chr(13) & Chr(10) & _
        "NumDossierJustificatif, EvaluateurID, ResultatEvaluation"
'        rst.MoveNext
        Cancel = True
        Exit Sub
    End If
Loop
 
End Sub

Toutefois, j'ai un message d'erreur, comme quoi il ne trouve pas le membre de méthode ou de données rst.txt_EvalNumDossierJustif.
Or txt_EvalNumDossierJustif est bien le nom du champ à vérifier et il est bien dans le sous-formulaire....

Avez-vous des idées et suggestions pour m'aider à résoudre cela?
Merci d'avance