Calcul de la Médiane avec regroupement sur un champ
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.:cry:
Code:
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 ? :oops:
Merci d'avance,