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:
Le résultat est celui que je souhaite... mon problème est que la macro prend....20 secondes pour traiter 10 lignes.
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
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 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.
Partager