Bonjour, avec ce titre pas du tout explicite, je vous explique mon problème :

J'ai une colonne A avec en titre "Date P2", vous l'aurez compris, cette colonne est remplie de dates.
J'ai une colonne B avec un titre "Délai NDdoc+P2", cette colonne est remplie de valeurs comme "232", "3", "18" etc.

Avec ces deux colonnes, je dois générer un graphique. Dans la colonne A, je fais un tri pour ne prendre en compte que les dates à partir du premier mois de l'année.

Le graphique dois faire la moyenne, pour chaque mois, de tous les Délais NDdoc+P2 qui précédent ou qui font parties de ce mois.

Exemple : Pour le mois de Janvier, fera la moyenne de tous les délais du mois de janvier.
Pour le mois de Février, fera la moyenne de tous les délais du mois de janvier et février.
Pour le mois de Mars, fera la moyenne de tous les délais du mois de janvier, février et mars.

Je ne veux donc pas faire la moyenne de chaque mois et les additionner, mais faire la moyenne de tous les délais qui précèdent et font partie du mois...

Je ne sais pas trop si c'est clair.. (Dans ma tête ça l'est en tout cas !)

Demandez plus d'explications si vous voulez...

Merci d'avance pour votre aide !

PS: Pour l'instant, j'ai réussi à filtrer la colonne A, mais pour le reste, j'ai vraiment aucune idée de comment faire ça...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
'Dernière ligne renseignée de la feuille de calculs
   Dim DerLig As Variant
       DerLig = Worksheets("NDdoc+P2").UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Mettre en J2 le premier jour de l'année
[J2].FormulaLocal = Format("01/01/" & Year(Now), "dd/mm/yyyy")
Worksheets("NDdoc+P2").Range(Cells(1, 1), Cells(DerLig, 1)).AutoFilter Field:=1, Criteria1:=">=" & Range("J2")
J'ai un peu avancé... Je vous met mon code si quelqu'un voudra m'aider ^^

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Workbooks("Données du graphique_Délai LUP QC_K2K3_DEAPB.xlsx").Worksheets("NDdoc+P2").Activate
'Dernière ligne renseignée de la feuille de calculs
   Dim DerLig As Variant
       DerLig = Worksheets("NDdoc+P2").UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Mettre en J2 le premier jour de l'année
[J2].FormulaLocal = Format("01/01/" & Year(Now), "dd/mm/yyyy")
Worksheets("NDdoc+P2").Range(Cells(1, 1), Cells(DerLig, 1)).AutoFilter Field:=1, Criteria1:=">=" & Range("J2")
 
                'Crée la feuille pour le Year2Date et nomme les colonnes
        Sheets.Add After:=ActiveSheet
        ActiveSheet.Name = "YearToDate"
        Range("A1").FormulaR1C1 = "DATE_P2"
        Range("B1").FormulaR1C1 = "Délai" & Chr(10) & " Nddoc+P2"
        Range("F1").FormulaR1C1 = "MOIS_P2"
        Range("G1").FormulaR1C1 = "Tri " & Chr(10) & "lups/mois"
        Range("H1").FormulaR1C1 = "Moyenne " & Chr(10) & "lups/mois"
 
                'Copie les données du NDdoc+P2
            Sheets("NDdoc+P2").Select 'Copie DATE_P2
        Range("A1").Select
        Range(Selection, Selection.End(xlDown)).Copy
        Sheets("YearToDate").Select
        Range("A1").Select
        ActiveSheet.Paste
 
        Sheets("NDdoc+P2").Select 'Copie Délai NDdoc+P2
        Range("B1").Select
        Range(Selection, Selection.End(xlDown)).Copy
        Sheets("YearToDate").Select
        Range("B1").Select
        ActiveSheet.Paste
 
            Dim op As Integer
        op = Range("B" & Rows.Count).End(xlUp).Row 'op : Dernière ligne de la colonne B
 
                    'Entre la formule en colonne F et G
        Range("F2:F" & op).FormulaLocal = "=TEXTE(A2;""mmmm aaaa"")"
        Range("G2:G" & op).FormulaLocal = "=SI(F1=F2;""x"";F2)"
 
    Dim fl As Worksheet
    Dim NooLig As Integer, DerrLig As Long
    Set fl = Worksheets("NDdoc+P2")
    DerrLig = Range("A" & Rows.Count).End(xlUp).Row
 
                'Fait la moyenne
                Dim FL1 As Worksheet
    Dim NoLig As Integer, DerLigg As Long
    Dim cpt As Integer
 
    Set FL1 = Worksheets("YearToDate")
    DerLig = Range("B" & Rows.Count).End(xlUp).Row
    cpt = 0
 
    FL1.Cells(2, 8) = FL1.Cells(2, 2) 'copie la première valeur (délai NDdoc+P2)
 
    For NoLig = 3 To DerLig + 1
 
    If FL1.Cells(NoLig, 7).Value = "x" Then 'Parcourt la colonne G et regarde si une cellule contient un "x"
    cpt = cpt + 1 'Incrémente le cpt : cpt sert à savoir si il y a un autre "x" après
 
    FL1.Cells(NoLig, 8).Offset(-cpt, 0) = FL1.Cells(NoLig, 8).Offset(-cpt, 0) + FL1.Cells(NoLig, 2) 'Fais la somme de la colonne d'avant de la cellule en diagonale
 
    Else
 
    If cpt <> 0 Then 'Si il y a eu des x avant
    cpt = cpt + 1 'Incrémente la colonne G pour copier la ligne d'après
 
    FL1.Cells(NoLig, 8).Offset(-cpt, 0) = FL1.Cells(NoLig, 8).Offset(-cpt, 0) \ cpt 'Fait la moyenne
 
    End If
    Cells(NoLig, 8) = Application.WorksheetFunction.Sum(Range(Cells(NoLig, 2), Cells(2, 2))) 'Somme des mois précédents
 
    cpt = cpt - 1 'Rénitialise le cpt à 0
 
    End If
    Next