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