Accélérer décompte

Bonsoir le forum

Je souhaite accéléré le décompte de ce fichier

en vous remerciant pour le temps accordé

Merci

4decompte.zip (18.04 Ko)

Salut letranquille,

Quand tu veux effectuer une opération sur un grand tableau, la méthode le plus efficace pour une exécution rapide des données et de mettre ton tableau dans un array, d'effectuer les opérations dans celui-ci puis de insérer l'array dans ta feuille !

Bonjour,

Un essai ...

Sub Decompte()
    Application.ScreenUpdating = False
    Range("A5:A55000").ClearContents
    mTab = Range("A6:F55000")

    For i = 1 To 55000 - 5
        For j = 1 To 6
            For k = 2 To 6
                If mTab(i, j) = mTab(4, k) Then n = n + 1
            Next k
        Next j
        Cells(i + 5, 1) = n: n = 0
    Next i
    If Application.CountIf(Range("A6:A55000"), 5) > 0 Then Range("A5") = "trouvé"
End Sub

ric

Bonsoir baboutz, le forum

Le problème c'est que je bug la dessus

merci

Salut Ric,

Je pense que ce qui prend le plus de temps c'est l'écriture dans la colonne A....

@letranquille

Il existe pourtant PLEINS de topics, tutos etc... à ce sujet. Il ne faut pas hésiter à se lancer et montrer où exactement tu bloques, c'est comme ça que l'on progresse !

Pour ton cas, voici un code à tester :

Sub Decompte()

    Dim DataRange As Variant

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents

    DataRange = Worksheets("Feuil1").Range("A6:A" & Range("B" & Rows.Count).End(xlUp).Row).Value

    For i = 1 To Range("B" & Rows.Count).End(xlUp).Row - 5
       For j = 2 To 6
          For k = 2 To 6
          If Cells(i + 5, j) = Cells(4, k) Then n = n + 1
          Next k
       Next j
    DataRange(i, 1) = n
    n = 0
    Next i

    Worksheets("Feuil1").Range("A6:A" & Range("B" & Rows.Count).End(xlUp).Row).Value = DataRange

    If Application.CountIf(Range("A6:A" & Range("A" & Rows.Count).End(xlUp).Row), 5) > 0 Then Range("A5") = "trouvé"

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub

Pour 55 000 lignes remplies : avec ton code, temps d'exécution : 9s ; avec ce code : 7s.

La différence n'est pas énorme et c'est normal, c'est une petite opération.

Je ne suis pas sur que l'on puisse faire énormément mieux !

Bonne soirée !

Baboutz

Rebonsoir

merci Baboutz, j'ai fait des recherches, il se peut que mes demandes soient mal formulées

Merci beaucoup

Rechercher des sujets similaires à "accelerer decompte"