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é ?


Pour info
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
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").


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