* Bonjour, *
Quelqu'un peut-il me dire s'ili voit une différence entre les 2 codes suivants:
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 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
Je mets mon "X" à la 1000ème ligne
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 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
Partager