VBA : Calcul de la médian

Bonjour Forum,

Je me suis confronté à un problèe de calcul du salaire médian. Au fait, je fais des TCDs et dans celui-ci, je veux sortir 4 colonnes (Moyenne, Min, Max et Median) sur le calcul de la variable salaire en fonction de mes deux autres variables (catégorie et sexe)

Mon code marche bien si je supprime la partie de calcul de la médiane. je ne sais pas pourquoi la fonction " .Function=xlMedian" ne marche pas....

Je vous met ci-joint un aperçu de ma sortie du TCD que je souhaite avoir sauf que si je supprime la partie du calcul de la médiane cela marche super bien. (ne tenez pas compte de la mise en forme, elle a été faite manuellement...)

Je vous remercie d'avance.

Code :

Option Explicit

Dim wsData As Worksheet, wsPT As Worksheet

Dim rngData As Range

Dim ptCache As PivotCache

Dim pt As PivotTable

Dim NomTable As String

Sub TCDautomatique3_Bouton2_Cliquer()

' Adéquation de la formation / emploi des diplômés

Application.DisplayAlerts = False

Application.ScreenUpdating = False

Set wsData = Worksheets("Données3")

Set rngData = wsData.Cells(1).CurrentRegion

Set wsPT = Worksheets("TCD automatique3")

'Suppression de tous les TCD existants dans la feuille

For Each pt In wsPT.PivotTables

pt.TableRange2.Clear

Next pt

With wsPT

Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngData, 4)

Set pt = ptCache.CreatePivotTable(wsPT.Range("B407"), "TCD", , 4)

'Ajout des champs au TCD

With pt

.ManualUpdate = True

'Ajout d'une Ligne

With .PivotFields("Categorie")

.Orientation = xlRowField

.Position = 1

End With

With .PivotFields("sexe")

.Orientation = xlRowField

.Position = 2

End With

' Calcul du salaire moyen

With pt.PivotFields("salaire")

.Orientation = xlDataField

.Function = xlAverage

.Position = 1

.NumberFormat = "0.00"

.Name = "Salaire moyen"

End With

' Calcul du salaire min

With pt.PivotFields("emploi_salaire_6m")

.Orientation = xlDataField

.Function = xlMin

.Position = 2

.NumberFormat = "0.00"

.Name = "Min"

End With

' Calcul du salaire max

With pt.PivotFields("emploi_salaire_6m")

.Orientation = xlDataField

.Function = xlMax

.Position = 3

.NumberFormat = "0.00"

.Name = "Max"

End With

' Calcul du salaire median

With pt.PivotFields("emploi_salaire_6m")

.Orientation = xlDataField

.Function = xlMedian

.Position = 4

.NumberFormat = "0.00"

.Name = "Mediane"

End With

.ManualUpdate = False

End With

.ManualUpdate = False

End With

Set pt = Nothing

Set ptCache = Nothing

Set rngData = Nothing

Set wsPT = Nothing: Set wsData = Nothing

End Sub

median

Bonjour,

cela ne va sans doute pas t'aider beaucoup mais xlmedian n'est pas une possibilité pour la propriété .function

https://msdn.microsoft.com/en-us/library/office/ff837374.aspx

Merci,

J'ai trouvé beaucoup de propriété pour .function , çà m'aide aussi

Mais dommage qu'ils n'ont pas prevu une proprièté de .function pour le calcul de Median je vais continuer à calculer autrement voir (j'espere y arriver....)

Bonne journée

Je n'arrive toujours pas à calculer ma médiane !!!

Bonjour,

Merci de joindre un fichier à ta demande.

Cdlt.

Bonjour Jean-Eric,

Merci, tu trouves ci-joint le fichier.

Bonne journée.

Crdlt

27traitement.xlsm (30.94 Ko)

Ci-joint le fichier d'exemple

17traitement.xlsm (30.94 Ko)

Bonjour,

A vérifier.

Cdlt.

40traitement.xlsm (28.31 Ko)

Bonjour Jean-Eric,

Merci, je vois qu'il faut créer une colonne "Médiane" dans la base avant de faire le tableau croisé... çà marche mais comme j'ai plusieurs TCDs à sortir, lorsque je fais la mise à jour de mes TCDs la médiane disparaît dans le TCDs...

Bonjour,

Voir procédure VBA modifiée.

Cdlt.

79traitement-v1.xlsm (29.90 Ko)

Bonjours Jean-Eric,

Merci pour ton aide, çà marche bien mais plutôt sur ton fichier...

J'ai essayé de copier la formule " =MEDIANE(SI(([specialite_6m]=[@[specialite_6m]])*([regime_6m]=[@[regime_6m]])*([emploi_salaire_6m]>0);[emploi_salaire_6m])) " pour mettre dans ma base mais elle n'a pas marché. ma base a plusieurs colonnes (dont specialite_6m, regime_6m et emploi_salaire_6m).

J'insert une colonne médiane et mettre la formule... mais elle n'a pas marché

Re,

C'est une formule matricielle. Il faut valider avec CTRL+MAJ+ENTREE.

Cdlt.

Rechercher des sujets similaires à "vba calcul median"