Bonjour et bonne année à tous et à toutes,
J'ai un formulaire concernant les données d'adhérents d'une association.
J'y ai inséré un sous-formulaire affichant les cotisations de cet adhérent (liés champs-père/champ-fils par N°Adherent).
Cela marche bien pour la consultation des adhérents actuels.
Par contre, lorsque je crée un nouvel adhérent (via un bouton sur mon formulaire principal) cela ne marche pas en ce qui concerne mon sous-formulaire.
Quelques lignes que j'utilise sur le formulaire principal :
Sur bouton "nouvel enregistrement" :
Sur "Avant insertion" :
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 Private Sub Nouveau_Click() On Error GoTo Err_Nouveau_Click Forms![F Adhérents avec cotisations].AllowEdits = True DoCmd.GoToRecord , , acNewRec DoCmd.GoToControl "Titre" Me!Titre.Locked = False Me!NomAdherent.Locked = False Me!Prénom.Locked = False Me!DateNaissance.Locked = False Me!Adherent.Locked = False Me!DateAdhesion.Locked = False Me!TypeAdherent.Locked = False Me!Fonction.Locked = False Me!Spécialité.Locked = False Me!NomOrigine.Locked = False Me!DateOrigine.Locked = False Me!DateRadiation.Locked = False Me!MotifRadiation.Locked = False Me!DateDeces.Locked = False Me!Adresse.Locked = False Me!NomVille.Locked = False Me!CP.Locked = False Me!Region.Locked = False Me!Téléphone.Locked = False Me!Mobile.Locked = False Me!EMail.Locked = False Me!Profession.Locked = False Me!Retraite.Locked = False Me!DateMiseAJour.Locked = False Exit_Nouveau_Click: Exit Sub Err_Nouveau_Click: MsgBox Err.Description Resume Exit_Nouveau_Click End Sub
Ce qui fait que, dès que je commence à saisir le nom du nouvel adhérent, un nouveau N°Adherent lui est attribué dans le formulaire principal et le sous-formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Form_BeforeInsert(Cancel As Integer) N°Adherent = DLast("[N°Adherent]", "[T Adhérents]") + 1 Forms![F Adhérents avec cotisations]![T Cotisations].Form!N°Adherent.Value = Forms![F Adhérents avec cotisations].N°Adherent.Value End Sub
Cela fonctionne parfaitement.
Sur bouton "nouvel enregistrement" :
Ce que je voudrais c'est que, quand je saisis les premières données de l'adhérent dans le formulaire principal, cela s'affiche aussitôt dans le sous-formulaire.
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 Private Sub Nouveau_Click() On Error GoTo Err_Nouveau_Click Forms![F Adhérents avec cotisations].AllowEdits = True DoCmd.GoToRecord , , acNewRec DoCmd.GoToControl "Titre" Me!Titre.Locked = False Me!NomAdherent.Locked = False Me!Prénom.Locked = False Me!DateNaissance.Locked = False Me!Adherent.Locked = False Me!DateAdhesion.Locked = False Me!TypeAdherent.Locked = False Me!Fonction.Locked = False Me!Spécialité.Locked = False Me!NomOrigine.Locked = False Me!DateOrigine.Locked = False Me!DateRadiation.Locked = False Me!MotifRadiation.Locked = False Me!DateDeces.Locked = False Me!Adresse.Locked = False Me!NomVille.Locked = False Me!CP.Locked = False Me!Region.Locked = False Me!Téléphone.Locked = False Me!Mobile.Locked = False Me!EMail.Locked = False Me!Profession.Locked = False Me!Retraite.Locked = False Me!DateMiseAJour.Locked = False Exit_Nouveau_Click: Exit Sub Err_Nouveau_Click: MsgBox Err.Description Resume Exit_Nouveau_Click End Sub
Ou alors, quand je valide les données du formulaire principal, les données apparaissent dans mon sous-formulaire.
Le code associé à mon bouton "Valider les données" de mon formulaire principal :
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 Private Sub Sauvegarde_Click() ' Dim stDocName As String ' On Error GoTo Err_Sauvegarde_Click If Me.Dirty And IsNull(Me.DateDeces) And Me.N°Adherent <= DLast("[N°Adherent]", "[T Adhérents]") Then 'DoCmd.RunCommand acCmdSaveRecord 'Me.Refresh ' 'Sauvegarde anciennes valeurs ' Dim T_Anciennes_valeurs As Recordset Set T_Anciennes_valeurs = CurrentDb.OpenRecordset("T_Anciennes_valeurs", DB_OPEN_TABLE) T_Anciennes_valeurs.AddNew T_Anciennes_valeurs("N°Adherent") = Me.N°Adherent.OldValue T_Anciennes_valeurs("Titre") = Me.Titre.OldValue T_Anciennes_valeurs("NomAdherent") = Me.NomAdherent.OldValue T_Anciennes_valeurs("PrenomAdherent") = Me.Prénom.OldValue T_Anciennes_valeurs("Adherent") = Me.Adherent.OldValue T_Anciennes_valeurs("DateAdhesion") = Me.DateAdhesion.OldValue T_Anciennes_valeurs("TypeAdherent") = Me.TypeAdherent.OldValue T_Anciennes_valeurs("Fonction") = Me.Fonction.OldValue T_Anciennes_valeurs("Specialite") = Me.Spécialité.OldValue T_Anciennes_valeurs("Origine") = Me.NomOrigine.OldValue T_Anciennes_valeurs("DateOrigine") = Me.DateOrigine.OldValue T_Anciennes_valeurs("DateNaissance") = Me.DateNaissance.OldValue T_Anciennes_valeurs("DateRadiation") = Me.DateRadiation.OldValue T_Anciennes_valeurs("MotifRadiation") = Me.MotifRadiation.OldValue T_Anciennes_valeurs("DateDeces") = Me.DateDeces.OldValue T_Anciennes_valeurs("Adresse") = Me.Adresse.OldValue T_Anciennes_valeurs("Ville") = Me.NomVille.OldValue T_Anciennes_valeurs("CP") = Me.CP.OldValue T_Anciennes_valeurs("Region") = Me.Region.OldValue T_Anciennes_valeurs("Pays") = Me.Pays.OldValue T_Anciennes_valeurs("Telephone") = Me.Téléphone.OldValue T_Anciennes_valeurs("Mobile") = Me.Mobile.OldValue T_Anciennes_valeurs("Fax") = Me.Fax.OldValue T_Anciennes_valeurs("EMail") = Me.EMail.OldValue T_Anciennes_valeurs("Profession") = Me.Profession.OldValue T_Anciennes_valeurs("Retraite") = Me.Retraite.OldValue 'T_Anciennes_valeurs("DerniereMAJ") = Me.DateMiseAJour.OldValue T_Anciennes_valeurs("Divers") = Me.Divers.OldValue T_Anciennes_valeurs("MiseAJour") = Now T_Anciennes_valeurs.Update T_Anciennes_valeurs.Close ' 'sauvegarde nouvelles valeurs ' Dim T_Nouvelles_valeurs As Recordset Set T_Nouvelles_valeurs = CurrentDb.OpenRecordset("T_Nouvelles_valeurs", DB_OPEN_TABLE) T_Nouvelles_valeurs.AddNew T_Nouvelles_valeurs("N°Adherent") = Me.N°Adherent T_Nouvelles_valeurs("Titre") = Me.Titre T_Nouvelles_valeurs("NomAdherent") = Me.NomAdherent T_Nouvelles_valeurs("PrenomAdherent") = Me.Prénom T_Nouvelles_valeurs("Adherent") = Me.Adherent T_Nouvelles_valeurs("DateAdhesion") = Me.DateAdhesion T_Nouvelles_valeurs("TypeAdherent") = Me.TypeAdherent T_Nouvelles_valeurs("Fonction") = Me.Fonction T_Nouvelles_valeurs("Specialite") = Me.Spécialité T_Nouvelles_valeurs("Origine") = Me.NomOrigine T_Nouvelles_valeurs("DateOrigine") = Me.DateOrigine T_Nouvelles_valeurs("DateNaissance") = Me.DateNaissance T_Nouvelles_valeurs("DateRadiation") = Me.DateRadiation T_Nouvelles_valeurs("MotifRadiation") = Me.MotifRadiation T_Nouvelles_valeurs("DateDeces") = Me.DateDeces T_Nouvelles_valeurs("Adresse") = Me.Adresse T_Nouvelles_valeurs("Ville") = Me.NomVille T_Nouvelles_valeurs("CP") = Me.CP T_Nouvelles_valeurs("Region") = Me.Region T_Nouvelles_valeurs("Pays") = Me.Pays T_Nouvelles_valeurs("Telephone") = Me.Téléphone T_Nouvelles_valeurs("Mobile") = Me.Mobile T_Nouvelles_valeurs("Fax") = Me.Fax T_Nouvelles_valeurs("EMail") = Me.EMail T_Nouvelles_valeurs("Profession") = Me.Profession T_Nouvelles_valeurs("Retraite") = Me.Retraite T_Nouvelles_valeurs("MiseAjour") = Now T_Nouvelles_valeurs("Divers") = Me.Divers 'T_Nouvelles_valeurs("DerniereMAJ") = Me.DateMiseAJour.OldValue T_Nouvelles_valeurs.Update T_Nouvelles_valeurs.Close Me.DateMiseAJour = Now Dim Ctl As Control For Each Ctl In Me.Détail.Controls If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or (Ctl.ControlType = acCheckBox) Then Ctl.Locked = True End If Next Ctl End If Exit_Sauvegarde_Click: Exit Sub Err_Sauvegarde_Click: MsgBox Err.Description ' Resume Exit_Sauvegarde_Click End Sub
Merci de votre aide.
A+
C15
Partager