Bonjour,
je cherche à faire une moyenne glissante sous access
exemple
Index Date valeur Moyenne mobile
1 01/01/2014 5
2 01/02/2014 10 7.5
3 01/03/2014 15 12.5
merci d'avance de vos retour
Bonjour,
je cherche à faire une moyenne glissante sous access
exemple
Index Date valeur Moyenne mobile
1 01/01/2014 5
2 01/02/2014 10 7.5
3 01/03/2014 15 12.5
merci d'avance de vos retour
Bonjour,
Explique « moyenne glissante ».
Il me semble que tu devrais spécifier comment elle glisse (par ex. la moyenne des x données précédentes).
Donne un exemple concret avec le résultat que tu attends.
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Bonjour,
je viens d'ajouter un fichier excel et ma base access
J'effectue des relevés chaque jour sur une machine et je souhaiterais faire une moyenne mobile sur les 20 derniers relevés (enregistrement)
J'espère que je suis plus clair
Bonjour,
Je ne suis pas équipé pour lire ta bdd : je suis resté à Access2000.
D’abord, si à l’origine les données sont saisies dans Excel, c’est plus simple d’y faire le calcul dans la foulée et d’importer ensuite le résultat dans Access.
En Access, voici une procédure qui fait le calcul.
J’ai repris tes données dans la table LaTable
N.B. J’ai gardé les données calculées par Excel à titre de contrôle.
Code de la procédure
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 Option Compare Database Option Explicit Public Sub MoyMob() Dim t(20) As Double Dim i As Integer Dim rs As Recordset Dim dCalcul As Double 'Réinitialiser la colonne DoCmd.SetWarnings False DoCmd.RunSQL "UPDATE LaTable SET MoyMob = Null;" DoCmd.SetWarnings True Set rs = CurrentDb.OpenRecordset("LaTable") 'Garnir t avec les 19 premiers (pas de moyenne mobile pour ceux-là) rs.MoveFirst For i = 1 To 19 ' t(i) = rs("Releve") rs.Edit rs("MoyMob") = Null rs.Update rs.MoveNext Next i 'Traitement des cas banals Do Until rs.EOF 'Faire glisser chaque case du tableau vers la gauche For i = 0 To 19 t(i) = t(i + 1) Next i 'Accueillir la valeur du 20e suivant t(19) = rs("Releve") 'Calculer la moyenne dCalcul = 0 For i = 0 To 19 dCalcul = dCalcul + t(i) Next i dCalcul = dCalcul / 20 'Enregistrer le résultat rs.Edit rs("MoyMob") = dCalcul rs.Update 'Au suivant rs.MoveNext Loop 'Sortir rs.Close Set rs = Nothing End Sub
Pour l’exécuter
Tu ouvres la fenêtre d’exécution : <CTRL+G> et tu saisis « call MoyMob ».
… et la table se complète :
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Merci pour ton analyse et ton explication
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager