Tableau croisé dynamique "fonction percentile"

cooldidi

XLDnaute Nouveau
Bonjour à tous,
J'ai un petit problème et je sais pas si une solution rapide existe.
J'ai un fichier access avec 200.000 enregistrements. Sous access il est possible de faire une reqête en regroupant les réponses selon un certain champ (par exemple le champ "Nom") et de synthétiser les réponses d'un autre champ (par exemple temps sur 100m) selon une fonction (par exemple "Moyenne"). Si je lance ma reqête et que j'ai 1000 Nom différents dans mes 200.000 enregistrement il va m'affichier pour chacun des Noms la moyenne des temps sur 100m.

Moi j'aimerais la même chose mais je souhaiterais qu'il m'afficher le pourcentile/percentile/centile 0,95. Le problème c'est que cette fonction n'existe pas sous access.

J'ai donc copié mes 200.000 enregsitrements sous 4 feuilles Excel en m'assurant qu'un Nom ne se retrouve que sur une seule feuille. A nouveau si je veux regrouper les "temps sur 100m" par Nom, l'outil le plus approprié me parait le Tableau croisé dynamique. Pas de chance lui non plus ne possède pas par défaut la fonction centile.

Quelq'un sait comment inclure ma fonction Centile dans Access ou dans le TDC? Ou bien je vais être obligé de créer une macro :-/

Merci d'avance...
 

ds34606

XLDnaute Nouveau
Re : Tableau croisé dynamique "fonction percentile"

Bonjour à tous,
J'ai un petit problème et je sais pas si une solution rapide existe.
J'ai un fichier access avec 200.000 enregistrements. Sous access il est possible de faire une reqête en regroupant les réponses selon un certain champ (par exemple le champ "Nom") et de synthétiser les réponses d'un autre champ (par exemple temps sur 100m) selon une fonction (par exemple "Moyenne"). Si je lance ma reqête et que j'ai 1000 Nom différents dans mes 200.000 enregistrement il va m'affichier pour chacun des Noms la moyenne des temps sur 100m.

Moi j'aimerais la même chose mais je souhaiterais qu'il m'afficher le pourcentile/percentile/centile 0,95. Le problème c'est que cette fonction n'existe pas sous access.

J'ai donc copié mes 200.000 enregsitrements sous 4 feuilles Excel en m'assurant qu'un Nom ne se retrouve que sur une seule feuille. A nouveau si je veux regrouper les "temps sur 100m" par Nom, l'outil le plus approprié me parait le Tableau croisé dynamique. Pas de chance lui non plus ne possède pas par défaut la fonction centile.

Quelq'un sait comment inclure ma fonction Centile dans Access ou dans le TDC? Ou bien je vais être obligé de créer une macro :-/

Merci d'avance...
Bonjour,
J'ai exactement le même problème;
J'ai essayé de modifier manuellement la création d'un tableau croisé dynamique en remplaçant les fonctions admises par la fonction Centile mais sans résultat;
ci-après se trouve le "code" du tableau croisé dynamaique enregistré avec d'abord la fonction "Count" puis la fonction centiel remplacée:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Data!R16C18:R82C18").CreatePivotTable TableDestination:="", TableName:= _
"PivotTable3", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable3").AddFields RowFields:=Array("QA Days", _
"Data")
With ActiveSheet.PivotTables("PivotTable3").PivotFields("QA Days")
.Orientation = xlDataField
.Caption = "Count of QA Days"
.Position = 1
.Function = xlCount
End With
With ActiveSheet.PivotTables("PivotTable3").PivotFields("QA Days")
.Orientation = xlDataField
.Caption = "Centile of QA Days2"
.Function = xlCentile
End With

Mais la fonction Centile n'est pas reconnu (j'ai écrit cette fonction dans Excel car je recherche le Percentile à 0.8:
Function Centile(Intervalle)
Centile = Application.Percentile(Intervalle, 0.8)
End Function)
Et ceci pour éviter de rajouter un argument dans les fonctions du tableau croisé dynamique...

Avez-vous trouvé une solution depuis...cela m'intéresse aussi...
 

lalary

XLDnaute Nouveau
Re : Tableau croisé dynamique "fonction percentile"

Salut à vous.

Je viens de tomber par hasard sur votre discussion. En fait ce problème se résout en VBA. Il faut faire un recordet qui stocke les résultats de la requête, stocker les valeurs du recordset dans un tableau dynamique, ordonné le tableau dynamique par ordre croissant, déterminer les quantiles puis stocker le résultat dans un tableau qui sera affecté à un recordset. :D Je sais c'est un peu long mais ca se passe très bien.

Pour avoir la fonction qui trie le tableau recherchez "quicksort + VBA" dans Google. Sinon postez une réponse je vous répondrais.
 

Discussions similaires

Réponses
4
Affichages
1 K

Statistiques des forums

Discussions
312 299
Messages
2 086 996
Membres
103 423
dernier inscrit
Guyom GIL