Salut
Puisqu'il peut y avoir des trous dans les ID, je te propose...
code à mettre dans un module standard
1 2 3 4 5 6 7 8 9 10 11
| Public Function lamoyennemobile(id As Long, tranche As Integer)
Dim rs As DAO.Recordset
Dim str As String
str = "SELECT Avg(rq.lanote) AS moyenne FROM (SELECT TOP " & tranche & " Feuil1.noteclasse AS lanote FROM Feuil1 WHERE (((Feuil1.numeroligne)<=" & id & ")) ORDER BY Feuil1.numeroligne DESC) AS rq;"
Set rs = CurrentDb.OpenRecordset(str)
If Not (rs.EOF And rs.BOF) Then
lamoyennemobile = rs(0)
Else
lamoyennemobile = 0
End If
End Function |
code de la requête
1 2
| SELECT Feuil1.numeroligne, Feuil1.noteclasse, lamoyennemobile([numeroligne],5) AS moyennne
FROM Feuil1; |
"Feuil1" est à remplacer par le nom de ta table. Tu peux automatiser en remplaçant la tranche (ici le 5) par
Forms![le nom du formulaire qui lance la requête]![le nom de la zone de texte qui contient la tranche]
@+
Partager