Bonjour,
J'ai une base gérant une association.
J'ai un formulaire qui me permet de récapituler les cotisations des adhérents (voir PJ)
Ce formulaire est alimenté par une procédure qui m'a été proposée par un contributeur il y a 2 ou 3 ans.
Cette procédure fonctionne parfaitement bien avec ma structure actuelle de ma base (1 table T Adhérents avec les données personnelles et le suivi des cotisations Du11 Du12 Du13... Du17 correspondant aux cotisations 2011 à 2017).
Je suis en train de restructurer ma base de manière plus fonctionnelle avec la T Adhérents ne comportant que les données personnelles et une table T Cotisations dues comportant tout ce qui est cotisations (Du11 Du12 Du13...Du17). Les 2 tables sont liées par N°Adhérent (clé primaire).
J'ai fait plusieurs essais pour modifier ma procédure et l'adapter à la nouvelle configuration. Echec:(
Si l'un d'entre vous pouvait adapter ma procédure, cela m'arrangerait.
Ceci est associé à la zone de texte [Année de départ] du formulaire :
avecCode:
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 Private Sub txtNbreDepart_AfterUpdate() Dim iNumDepart As Integer Dim Ctl As Control 'Vérifier que le contrôle n'est pas null If IsNull(Me.txtNbreDepart) Then Exit Sub iNumDepart = Me.txtNbreDepart 'Amenéger les contrôles For Each Ctl In Me.Controls If Ctl.Name Like "txtDU#" Then Ctl.ControlSource = "DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00"): GoTo ctlSuivant If Ctl.Name Like "et#" Then Ctl.Caption = (iNumDepart + Right(Ctl.Name, 1)) If Ctl.Name Like "txtAJour#" Then Ctl.ControlSource = "=DCount(""*"",""R Cotis_DuesCR"",""DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00") & "=0"")" GoTo ctlSuivant End If If Ctl.Name Like "txtRetard#" Then Ctl.ControlSource = "=DCount(""*"",""R Cotis_DuesCR"",""DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00") & "<>0"")" GoTo ctlSuivant End If If Ctl.Name Like "txtTlDu#" Then Ctl.ControlSource = "=DSum(""DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00") & """,""R Cotis_DuesCR"")" GoTo ctlSuivant End If ctlSuivant: Next Ctl 'Créer la requête source rCotiDues Call Cotis_DuesCR(iNumDepart) 'L'affecter comme source Me.RecordSource = "R Cotis_DuesCR" Me.txtNbreDepart = iNumDepart End Sub
Merci de votre aide.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Public Sub Cotis_DuesCR(NumDebut As Integer) Dim sSql As String Dim q As QueryDef sSql = "SELECT N°Adherent,Titre, Nom, Prenom, " _ & "DateAdhesion, Adresse, IIf(Mid(CP,3,1)='-', Mid(CP , InStr(CP,'-')+1), CP) AS CP1, Ville, Pays, " _ & "[Du" & Format(NumDebut, "00") & "]+[Du" & Format(NumDebut + 1, "00") & "]" _ & "+[Du" & Format(NumDebut + 2, "00") & "]+[Du" & Format(NumDebut + 3, "00") & "]" _ & "+[Du" & Format(NumDebut + 4, "00") & "]" _ & " AS [Total dû], " _ & "Du" & Format(NumDebut, "00") & "," _ & "Du" & Format(NumDebut + 1, "00") & "," _ & "Du" & Format(NumDebut + 2, "00") & "," _ & "Du" & Format(NumDebut + 3, "00") & "," _ & "Du" & Format(NumDebut + 4, "00") & "," _ & "(select count(*) from [T Adhérents] x where Adherent and x.Nom<a.Nom or (x.Nom=a.Nom and x.Prenom<=a.Prenom)) as numligne" _ & " FROM [T Adhérents] a " _ & " WHERE Adherent ORDER BY Nom, Prenom;" Set q = CurrentDb.QueryDefs("R Cotis_DuesCR") q.SQL = sSql End Sub
A+
C15