Je suis bien content que ça fonctionne. effectivement, sur 240 000 lignes, ce n'est quand même pas instantané !
Application.Calculation = -4135 => mode de calcul d'Excel mis sur manuel.
Application.Calculation = -4105 => mode de calcul mis sur automatique.
Cependant, j'ai fait trop vite : comme le code VBA ne fait que lire les données des feuilles sans rien y changer (à part la cellule résultat
en fin de calcul), les 2 instructions ci-dessus sont inutiles ; Application.ScreenUpdating = False est lui aussi inutile => nouveau fichier
Excel qui a remplacé l'ancien (dans mon message précédent) ; le nouveau code VBA est donc celui-ci :
Option Explicit
Sub test()
Dim Derniereligne As Long, résultat As Integer, i As Long
With Worksheets("BDD")
Derniereligne = .[A3].End(xlDown).Row
For i = 3 To Derniereligne
If .Range("A" & i) = [Feuil1!D1] And .Range("W" & i) = [Feuil1!A2] Then
résultat = résultat + .Range("K" & i)
End If
Next i
[Feuil1!D2] = résultat
End With
End Sub
mais regarde-le juste pour info car NCC 1701 a utilisé une méthode beaucoup plus rapide que la mienne :
« Test avec plus de 315 000 lignes en 2 secondes ! » ; BRAVO NCC 1701 !
Cordialement