* Bonjour, *

Quelqu'un peut-il me dire s'ili voit une différence entre les 2 codes suivants:


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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub PARINTERNATONLC()
 
Sheets("TABLEAU GENERAL").Select
Range("P2").Select
 
 
Do While ActiveCell.Value <> "X"
Sheets("TABLEAU GENERAL").Select
Selection.AutoFilter Field:=16, Criteria1:="A"
 
    If ActiveCell.Value Like "A" Then
        ligne = ActiveCell.Row
        Range(Cells(ligne, 1), Cells(ligne, 50)).Copy
        Sheets("A").Activate
        Range("A1").Select
        If ActiveCell.Offset(1, 0).Value = "" Then
            ActiveCell.Offset(1, 0).Select
            ActiveSheet.Paste
            Sheets("TABLEAU GENERAL").Select
            ActiveCell.Offset(1, 0).Select
 
 
 
        Else
            Selection.End(xlDown).Select
            ActiveCell.Offset(1, 0).Select
            ActiveSheet.Paste
            Sheets("TABLEAU GENERAL").Select
            ActiveCell.Offset(1, 0).Select
 
        End If
 
    Else
        ActiveCell.Offset(1, 0).Select
    End If
Loop
 Sheets("TABLEAU GENERAL").Select
 Range("P2").Select
Selection.AutoFilter Field:=16
End Sub
et:

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub PARINTERNATO()
 
Sheets("OUI").Select
Range("P2").Select
 
 
Do While ActiveCell.Value <> "X"
Sheets("OUI").Select
Selection.AutoFilter Field:=16, Criteria1:="A"
 
    If ActiveCell.Value Like "A" Then
        ligne = ActiveCell.Row
        Range(Cells(ligne, 1), Cells(ligne, 50)).Copy
        Sheets("A").Activate
        Range("A1").Select
        If ActiveCell.Offset(1, 0).Value = "" Then
            ActiveCell.Offset(1, 0).Select
            ActiveSheet.Paste
            Sheets("OUI").Select
            ActiveCell.Offset(1, 0).Select
 
 
 
        Else
            Selection.End(xlDown).Select
            ActiveCell.Offset(1, 0).Select
            ActiveSheet.Paste
            Sheets("OUI").Select
            ActiveCell.Offset(1, 0).Select
 
 
        End If
 
    Else
        ActiveCell.Offset(1, 0).Select
    End If
Loop
 Sheets("OUI").Select
Selection.AutoFilter Field:=16
End Sub
Je mets mon "X" à la 1000ème ligne


Je m'explique:


Je voudrais filtrer les données de mon tableau selon un critère qui est la valeur d'une cellule dans une colonne, copier les lignes correspondantes et les coller dans l'onglet qui va bien

Les deux macro effectue cela.

Mon problème est que la première prends beaucoup plus de temps et, à l'écran, je vois que le filtre s'applique et que les bonnes lignes apparaissent à l'écran mais la prochaine ligne qui apparaît, en dessous de la ligne dans laquelle j'ai ma dernière valeur, est ma ligne 1001. Dans la deuxième, beaucoup plus rapide, je vois ma sélection filtrée (ligne 2 à 5, par exemple) et la prochaine ligne sera la ligne 6 dans ce cas et je vois la boucle défiler sur toutes les lignes de 6 à 1000.

J'ai l'impression que le premier code boucle sur les lignes après 1001.


Merci