Bonjour à tous et à toutes,
Il s'agit d'une base gérant les adhérents d'une association.
Principal outil quotidien un formulaire F Adhérents dans lequel j'ai de nombreux contrôles (nom, prénom, adresse, téléphone, mail...ainsi que d'autres m'affichant diverses informations).
J'ai un bouton "Sauvegarde" qui me permet de valider les informations après leur saisie.
Grâce à l'aide de certains d'entre vous, j'y ai associé le code suivant qui me permet d'alimenter 2 tables T_Anciennes valeurs et T_Nouvelles valeurs.
La 1ère me garde un historique des anciennes données ; la 2ième me permet d'éditer tous les 2 ans, en alternance avec un annuaire complet, un addenda ne faisant apparaitre que les modifications des coordonnées de certains adhérents (changement adresse téléphone, mail...)
Or le code ci-dessous est déclenché par la modification de n'importe quel contrôle, y compris ceux qui sont secondaires (date adhésion, retraité, divers, fonction au sein de l'association...)
C'est le fait du
Comment pourrait-on améliorer ce code pour que cette sauvegarde dans les 2 tables secondaires ne soit déclenchée que si l'un des contrôles adresse, téléphone, mail, mobile, ville...(coordonnées géographiques et téléphoniques) est modifié ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Me.Dirty
Pour info
me permet de ne pas tenir compte des adhérents radiés et du dernier enregistré (je génère par ailleurs 2 autres états "nouveaux adhérents", "adhérents radiés").
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Me.Dirty And IsNull(Me.DateRadiation) And Me.N°Adherent < DLast("[N°Adherent]", "[T Adhérents]") Then
Merci de votre aide.
A+
C15nantes
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
119
120
121
122
123
124 Private Sub Sauvegarde_Click() ' Dim stDocName As String ' On Error GoTo Err_Sauvegarde_Click If Me.N°Adherent = DLast("[N°Adherent]", "[T Adhérents]") Then DoCmd.RunCommand acCmdSaveRecord Me.Refresh End If If Me.Dirty And IsNull(Me.DateRadiation) 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
Partager