Salut membres du forum !
J'aimerais pour pouvoir actualiser le sous formulaire d'un autre sous formulaire grâce à la procédure obtenu d'un membre du forum Developpez.net.
'Voici le 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 'tee_grandbois: 'pour éviter toute confusion, dans le formulaire Eleve_ChargeDuParentDialogue, j'ai renommé la procédure sMajForm en sMajSousForm. 'J'ai corrigé le code pour qu'il puisse traiter les données du sous-formulaire, il suffit de le coller directement dans le formulaire Eleve_ChargeDuParentDialogue: Code: Sub sMajSousForm() Dim lngClé As Long Dim lngEnrActif As Long Dim rs As DAO.Recordset On Error GoTo GestErr 'Désactive le rafraîchissement de l'écran Echo False 'S'il n'y a pas d'enregistrement, on quitte la procédure If Forms("PARENT").ELEVE_ChargeDuParent.Form.RecordsetClone.RecordCount = 0 Then Exit Sub lngClé = Forms("PARENT").ELEVE_ChargeDuParent.Form.Controls("mleeleve") lngEnrActif = Forms("PARENT").ELEVE_ChargeDuParent.Form.CurrentRecord Forms("PARENT").ELEVE_ChargeDuParent.Form.Requery Set rs = Forms("PARENT").ELEVE_ChargeDuParent.Form.RecordsetClone With rs 'S'il n'y a plus d'enregistrement, on quitte la procédure If rs.RecordCount = 0 Then Exit Sub .FindFirst "mleeleve=" & lngClé Select Case .NoMatch Case True 'Si l'enregistrement qui était actif a disparu... DoCmd.GoToRecord , , acGoTo, lngEnrActif Case False Forms("PARENT").ELEVE_ChargeDuParent.Form.Bookmark = .Bookmark End Select End With rs.Close Set rs = Nothing 'Active le rafraîchissement de l'écran Echo True Exit Sub GestErr: Select Case Err Case 2105 'Si le numéro d'enregistrement n'est plus valide... 'C'est qu'il y a moins d'enregistrements depuis le Requery, ' donc on active le dernier enregistrement DoCmd.GoToRecord , , acLast Case Else MsgBox Err.Description, Err.Number End Select rs.Close Set rs = Nothing 'Active le rafraîchissement de l'écran Echo True End Sub
Cependant, j'ai essayé d'adapter cette procédure à l'actualisation du sous formulaire d'un sous formulaire d'un formulaire principal. Voici le 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
39
40
41
42
43
44
45
46
47
48
49
50
51 Sub sMajSousDeSousForm() Dim lngClé As Long Dim lngEnrActif As Long Dim rs As DAO.Recordset On Error GoTo GestErr 'Désactive le rafraîchissement de l'écran Echo False 'S'il n'y a pas d'enregistrement, on quitte la procédure If Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.RecordsetClone.RecordCount = 0 Then Exit Sub lngClé = Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.Controls("NUM_AUTO_Commerce") lngEnrActif = Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.CurrentRecord Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.Requery Set rs = Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.RecordsetClone With rs 'S'il n'y a plus d'enregistrement, on quitte la procédure If rs.RecordCount = 0 Then Exit Sub .FindFirst "NUM_AUTO_Commerce=" & lngClé Select Case .NoMatch Case True 'Si l'enregistrement qui était actif a disparu... DoCmd.GoToRecord , , acGoTo, lngEnrActif Case False Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.Bookmark = .Bookmark End Select End With rs.Close Set rs = Nothing 'Active le rafraîchissement de l'écran Echo True Exit Sub GestErr: Select Case Err Case 2105 'Si le numéro d'enregistrement n'est plus valide... 'C'est qu'il y a moins d'enregistrements depuis le Requery, ' donc on active le dernier enregistrement DoCmd.GoToRecord , , acLast Case Else MsgBox Err.Description, Err.Number End Select rs.Close Set rs = Nothing 'Active le rafraîchissement de l'écran Echo True End Sub
Voici le message d'erreur qui en résulte:
propriété Ou Méthode Non Gérée Par Cet Objet
et
Variable objet ou variable de bloc with non définie
Cordialement.
Partager