Bonjour à tous,

J'ai un gros tableau de données sur 12 colonnes 33543 lignes. J'ai rajouté une colonne grâce à une macro VBA qui compte le nombre d'apparitions d'un critère (avec les formules SI et NB.SI.ENS).

Voici le code de la macro :

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
 
Sub ecrire_colonne_pannes()
    Dim Wk As Worksheet
    Dim j As Long
 
    Set Wk = Workbooks("BTU.xlsx").Worksheets("Défauts+CTRL (Parcs)")
 
    Wk.Range("M1").Value = "nb pannes"
 
    j = Application.WorksheetFunction.CountA(Wk.Range("D:D"))
 
    With Wk.Range("M2:M" & j)
        .FormulaR1C1 = _
        "=IF(COUNTIFS(C4,RC[-9],C8,""MONPAN*"")>3,""D"",IF(COUNTIFS(C4,RC[-9],C8,""MONPAN*"")=3,""C"",IF(COUNTIFS(C4,RC[-9],C8,""MONPAN*"")=2,""B"",IF(COUNTIFS(C4,RC[-9],C8,""MONPAN*"")=1,""A""))))"
        .Value = .Value
    End With
End Sub
La macro marche, ma colonne est bien créée, mais en revanche le calcul est très long (5% au bout d'une minute...). N'existe-t-il pas un moyen pour accélérer ceci, par exemple procéder au calculs en mémoire avec un array puis transposer cet array sur la colonne correspondante ?

Merci d'avance