Bonsoir à tous,
Je cherche à déterminer la médiane sur une de mes tables avec pour subtilité de calculer cette médiane sur un champ de regroupement. Avec l'exemple ci-dessous, je souhaite pour chaque valeur du champ GP déterminer sa médiane.
GP SF CIR Med
A 2 AZ 4,5
A 5 AI 4,5
A 3 AJ 4,5
A 1 AA 4,5
B 4 BB 5
C 10 CA 11,5
B 9 BX 5
B 5 BN 5
C 13 CF 11,5
C 12 CX 11,5
C 11 CR 11,5
Bien évidemment, j'ai écumé le forum et j'ai trouvé des solutions pour déterminer la médiane sur l'ensemble de ma table sans regroupement mais bon je n'ai pas envie de créer X tables et y appliquer la fonction.
J'ai également trouvé ceci. Il s'agit d'un code qui selon l'historique de la discussion devrait fonctionner pour déterminer cette médiane avec un regroupement malheureusement chez moi rien y fait.
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 Public Function fMediane(strTable As String, strField As String, Optional Arg_Champ_Regroupement As String, Optional Arg_Valeur_Regroupement) As Variant Dim oDBS As DAO.Database Dim oRST As DAO.Recordset Dim blnEven As Boolean Dim vntMedian As Variant Set oDBS = CurrentDb() If IsMissing(Arg_Regroupement) Then SQL = "SELECT " & strTable & ".* FROM " & strTable & " ORDER BY " & strTable & "." & strField & ";" Else SQL = "SELECT " & strTable & ".* FROM " & strTable & " WHERE " & strTable & ".[" & Arg_Champ_Regroupement & "]=" & Arg_Valeur_Regroupement & " ORDER BY " & strTable & "." & strField & ";" End If Set oRST = oDBS.OpenRecordset(SQL, dbOpenDynaset) If oRST.EOF = False Then oRST.MoveLast 'Y a-t'il un nombre pair d'enreistrements ? blnEven = (oRST.RecordCount Mod 2 = 0) 'Classer en décroissant si on a un nombre pair oRST.PercentPosition = 50 vntMedian = oRST.Fields(strField) If blnEven Then oRST.MoveNext 'faire la moyenne entre cet enregistrement et le précédent vntMedian = (vntMedian + oRST.Fields(strField)) / 2 End If End If fMediane = vntMedian oRST.Close Set oRST = Nothing Set oDBS = Nothing End Function
Je ne comprends pas à quoi correspond ce "Arg_Valeur_Regroupement" s'agit-il de mon champ GP des valeurs du champ GP?
Pouvez-vous me venir en aide ?
Merci d'avance,
Partager