Médiane avec multiconditions

Bonjour tous ,

J'ai calculé la médiane avec multi-conditions, le calcul est lent je voulais le faire avec le vba puisque le calcule pourrait être plus rapide.

L'exercice que j'ai joint c'est juste un exemple. L’exécution lente est sur mon vrai fichier qui contient plusieurs offres et un nombre important de lignes.

La formule pour le calcul : SI(ESTERREUR(MEDIANE(SI(($A$2:$A$44=$N$1)*($E$2:$E$44=J$2)*($B$2:$B$44=$I3)*($F$2:$F$44=$M$1);$G$2:$G$44)));"";MEDIANE(SI(($A$2:$A$44=$N$1)*($E$2:$E$44=J$2)*($B$2:$B$44=$I3)*($F$2:$F$44=$M$1);$G$2:$G$44)))

J'ai essayé ce code mais ça ne marche pas

Sub MEDIANE()

For Each cellule In Range("J3:L9")

annee = Range("m1")

offre = UCase(Range("n1"))

mois = UCase(Cells(2, cellule.Column))

jour = UCase(Cells(cellule.Row,9))

cellule.Value = Application.Evaluate("MEDIAN(IF((" & _

offre & "=R1C14)*(" & _

jour & "=RC9)," & _

mois & "R2C)," & _

annee & "=R1C13)," & _

C7 & "))")

Next cellule

End Sub

Le tableau est sur ce lien :

Merci pour votre aide.

Pas d'accès à ton fichier...

Ta formule me paraît bizarre, donc douteuse...

Ci-joint le fichier

Bonjour,

Si tu commences par écrire ta formule correctement, elle va se raccourcir sérieusement et tu pourras peut-être y voir plus clair :

=SIERREUR(MEDIANE(SI(($A$2:$A$44=$N$1)*($E$2:$E$44=J$2)*($B$2:$B$44=$I3)*($F$2:$F$44=$M$1);$G$2:$G$44));"")

Et pour te rendre compte de ce que tu as écrit dans ton code, prends la peine d'écrire ce que tu as formulé sous la même forme que ci-dessus et tu verras les éléments qui coincent (pas de signe =, parenthèses ou : manquants, conditions inversées, et non matricielle).

Je ne vois pas de raison que le calcul soit lent avec la formule dans le tableau !

Cordialement.

Rebonjour,

Merci pour le conseil concernant d’écrire la formule de la bonne manière, oui il n ' y a pas de lenteur sur le fichier joint, mais sur mon vrai fichier elle existe (11 offres et plus de trois milles lignes) , et ma question est comment trouver les mêmes résultats avec une macro.

Merci pour la compréhension

Essaie de reprendre le codage de ta formule en suivant de plus près la formule feuille, sachant que les références doivent être en style R1C1 (et sans inverser les conditions ni oublier de parenthèses).

Ton idée de variables, était bonne. Tu peux d'ailleurs définir celles qui ne varieront pas (M1 et N1) avant d'entamer la boucle. Mais ne te laisser pas perturber par leur insertion dans la formule.

Bon courage.

Bonjour,

Je ne suis pas persuadé que reprendre les formules telles que dans vba sera plus rapide.

A mon avis ça sera même plus lent.

Tu pourrais t'orienter vers une réduction des plages matricielles.

Un essai en supposant ton tableau trié par produit-année-mois.

eric

Je ne suis pas persuadé que reprendre les formules telles que dans vba sera plus rapide.

Je suis assez d'accord...

Ceci dit, je ne l'ai jamais vérifié. Il faudra que je fasse des essais un de ces jours...

Bonne fin de weekend.

Rechercher des sujets similaires à "mediane multiconditions"