Temps de calcul avec "Datediff"
Bonjour à toutes et tous
Je pense que je fais fausse route...
Pour faire simple: Je cherche à recopier des lignes entières d'une feuille "source" sur une "cible" en fonction de la date d'une colonne (la première pour l'exemple) de la feuille "source".
La ligne est copiée si la date en colonne A est supérieure à 6 mois
Voici l’idée:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Sub test2()
Dim deltaD As Integer 'Ecart en mois entre la date de la colonne 1 et aujourdhui feuille source
Dim deltaDmax As Integer 'Selection des dates a recopier
Dim lignedesign As Long 'Cosmetique > Pour selectionner où recopier les lignes sur feuille cible
deltaDmax = 6 'Definition du nb de mois
lignedesign = 11
Worksheets("cible").Cells.ClearContents
For Each ligne In Worksheets("source").Range("1:6500").Rows
deltaD = DateDiff("m", ligne.Cells(1, 1), Now)
'Recopie la ligne de la feuille "source" sur le feuille "cible" si la date est plus eloignee ou égale de 6 mois
If deltaD >= deltaDmax Then
ligne.Copy Destination:=Worksheets("cible").Rows(lignedesign).Cells(1, 1)
lignedesign = lignedesign + 1
End If
Next
End Sub |
Le résultat est celui que je souhaite... mon problème est que la macro prend....20 secondes pour traiter 10 lignes.
Le fichier final en comprend 2000.. Je n’ose même pas y penser...
Éternel débutant, je pense que je ne prends pas les choses par le bon bout... Me tourne donc vers vous :-)
Merci beaucoup pour votre aide.
Cordialement.