Moyenne par mois

Bonjour tout le monde,

Pensez vous que ce que je cherche avec la formule n'est pas faisable?

Merci encore.

Bonjour,

Une nouvelle proposition à étudier.

ALT F8, exécuter la procédure.

Cdlt.

5essai-3-v1.xlsm (68.29 Ko)

Bonjour,

Merci beaucoup. Le resultat final correspond à ma demande en effet.

Pour comprendre stp:

  • si je veux appliquer ce code à mon vrai fichier de données, que dois faire en plus de recuperer le code vba? (car je vois qu'il y a un filtre sur les deux colonnes, dois je le laisser etc?)
  • je compte adapter le code vba pour changer le calcul: au lieu de la moyenne je fais la somme.
Encore merci,

Cordialement,

Bonjour @ tous,

Bonjour tout le monde,

Pensez vous que ce que je cherche avec la formule n'est pas faisable?

Merci encore.

oui tout est possible, mais je te conseille d'opter pour le TCD comme je te l'avais conseillé auparavant, les formules matricielles sont gourmandes en ressources.

Cordialement

Bonjour,

Merci beaucoup. A vous deux vous m'avez offert deux choix complémentaires qui répondent à ma demande et me permettent de progresser (pour cela je vais rentrer dans vos xls pour comprendre vos formules).

oui TCD consomme bien moins je m'en suis rendu compte à mes dépens mais le souci est que j'utilise des fichiers de données important ou ce calcul n'est qu'un parmi d'autres et c'est la le probleme de faire (je crois) un tcd car cela affecte toute la feuille.

Merci beaucoup.

Cordialement,

Re,

pour la formule en colonne jaune qui extrait les dates, on peut par exemple la faire de cette façon puisque l'on sait que ça commence à partir de Janvier 2007, en D2 :

=DATE(ENT((LIGNES($2:2)-1)/12)+2007;MOD(LIGNES($2:2)-1;12)+1;1)

@ tirer vers le bas

Cordialement

Re,

Bonjour R@chid,

Si tu as regardé la procédure VBA, tu auras remarqué que le fonctionnement est pour un tableau de 2 colonnes...

Tu ne pourras pas l'intégrer telle que si tes données réelles comporte un grand nombre de colonnes.

Pour avoir la somme au lieu de la moyenne, remplacer xlAverage par xlSum.

La prochaine fois, envoie un fichier représentatif de tes données.

Cdlt.

Option Explicit

Public Sub Consolidate_Data()
Dim wb As Workbook
Dim ws As Worksheet
Dim tbl As Variant, arr() As Variant
Dim rng As Range
Dim I As Long
Dim pc As PivotCache
Dim pt As PivotTable
Dim lo As ListObject

    Application.ScreenUpdating = False

    Set wb = ActiveWorkbook
    Set ws = ActiveSheet
    ws.Columns("C:K").Delete Shift:=xlToLeft
    tbl = ws.ListObjects(1).Range
    ReDim arr(1 To UBound(tbl), 1 To 2)
    arr(1, 1) = "Date"
    arr(1, 2) = "valeur"
    For I = 2 To UBound(tbl)
        arr(I, 1) = Year(CDate(tbl(I, 1))) & "-" & Format(Month(CDate(tbl(I, 1))), "00")
        arr(I, 2) = tbl(I, 2)
    Next I
    ws.Cells(4).Resize(UBound(tbl), UBound(arr, 2)).Value = arr
    Set rng = ws.Cells(4).Resize(UBound(tbl), UBound(arr, 2))
    Set pc = wb.PivotCaches.Create(xlDatabase, rng)
    Set pt = pc.CreatePivotTable(ws.Cells(7), "PT_1")
    With pt
        .AddFields RowFields:="Date"
        With .PivotFields("Valeur")
            .Orientation = xlDataField
            .Function = xlAverage
            .NumberFormat = "#,##0.00;[Red]-#,##0.00;"
            .Caption = "Moyenne"
        End With
        .RowAxisLayout xlTabularRow
        .ColumnGrand = False
    End With

    pt.TableRange1.Copy
    ws.Cells(10).PasteSpecial xlPasteValuesAndNumberFormats
    Set lo = ws.ListObjects.Add(xlSrcRange, ws.Cells(10).CurrentRegion, , xlYes)

    With lo
        .Name = "Tableau2"
        .TableStyle = "TableStyleLight1"
        .ShowTableStyleRowStripes = False
    End With

    ws.Columns("D:I").Delete Shift:=xlToLeft
    ws.Cells(1).Select

End Sub

Rebonjour Jean-Eric,

Merci beaucoup pour ces précisions. Je vais revoir le code pour reflechir comment l'adapter et comparer avec le fichier de R@chid.

Oui c'est vrai, mais j'ai pas envoyé mon fichier pour ne pas 'décourager' à la première lecture les forumistes susceptibles de m'aider, c'est l'unique raison

Dans ce grand fichier, je fais une serie de calcul dont celui la qui en fait est de faire une somme chaque fois des six derniers mois. Ainsi, en juin, j'aurai la somme du mois de juin faite sur la base de janv+fev+...+juin. Puis en recommence, la somme de juillet est faite sur la base des six derniers mois de fev+mars+avril+...+juillet.

Cordialement,

Re,

pour la formule en colonne jaune qui extrait les dates, on peut par exemple la faire de cette façon puisque l'on sait que ça commence à partir de Janvier 2007, en D2 :

=DATE(ENT((LIGNES($2:2)-1)/12)+2007;MOD(LIGNES($2:2)-1;12)+1;1)

@ tirer vers le bas

Cordialement

Merci en effet cela fonction bien; le point faible reste qu'il faut mettre '+2007' et cela pose un pb quand on gere plein de données donc je prefere ta premiere formule.

Cordialement,

Bonjour @ tous,

Bonjour tout le monde,

Pensez vous que ce que je cherche avec la formule n'est pas faisable?

Merci encore.

oui tout est possible, mais je te conseille d'opter pour le TCD comme je te l'avais conseillé auparavant, les formules matricielles sont gourmandes en ressources.

SuperMacro_Formules.xlsm

Cordialement

Rebonjour,

Je suis en train de comprendre la formule qui marche très bien ! j'essaie de la modifié pour un contexte different; par exemple, je veux non plus faire la somme du mois en cours mais des six derniers mois:

La formule "=SIERREUR((SI((MOIS(Col_Dates)&"/"&ANNEE(Col_Dates))*1=D2;Col_Variables));"")" devrait se modifier (si j'ai compris) au niveau du "Col_Variables" uniquement mais quand je vois ce champs, je ne vois pas comment un champs peut se transformer en 6 mois.

Merci encore.

Cordialement,

Tu veux dire que quand on est le juillet 2007 on fait la moyenne de Février-Juillet 2007 et pour août 2007 on fait la moyenne de Mars-Août 2007 et ainsi de suite ?

Sinon, une question subsidiaire, est-ce que tes données sont triées par ordre chronologique et que sur la base il y a tous les mois de l'année ?

Cordialement

EXACTEMENT ! c'est le calcul. Ainsi le calcul se fait comme précédemment sur deux colonnes:

OUI, elles sont par ordre chronologique, et il y a tous les mois de l'année. Mais, il peut arriver qu'il y ait pas tous les jours (week end, fériés).

Merci beaucoup

Bonsoir @ tous,

Voir PJ

Cordialement

Bonsoir @ tous,

Voir PJ

SuperMacro_Formules_V2.xlsm

Cordialement

Bonjour à tous,

Merci beaucoup ! c'est exactement le type de fonctionnalité auquel je faisais reference. Très bon !

Je vois que le calcul de moyenne se fait en juin (de janv à juin) puis en juillet (de fev à juillet) etc.

Merci beaucoup

Cordialement,

R@chid & Jean-Eric:

Merci beaucoup, vous êtes très fort et super sympa, je progresse bcp grace à vous !

A bientot

Cordialement,

Marco

Rechercher des sujets similaires à "moyenne mois"