Bonjour,

je débute sous VBA et je fonctionne beaucoup avec l'enregistreur de macro pour comprendre quels codes utiliser, comprendre la logique de fonctionnement.

Je suis avec un excel de données, plusieurs colonnes.
je filtre une de ces colonnes --> je n'ai donc plus toutes les lignes à la suite.
La plupart de mes lignes sont des formules, je veux donc faire un copier/coller spécial - valeurs afin de pouvoir les exploiter ensuite.

Via l'enregistreur voilà ce que ça m'a donnée :

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    Sheets("Listes Produits").Select
    Range("F2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("F2:K617").Select
    Selection.Copy
    ActiveWindow.ScrollRow = 589
    ActiveWindow.ScrollRow = 584
    ActiveWindow.ScrollRow = 576
    ActiveWindow.ScrollRow = 557
    ActiveWindow.ScrollRow = 543
    ActiveWindow.ScrollRow = 529
    ActiveWindow.ScrollRow = 515
    ActiveWindow.ScrollRow = 476
    ActiveWindow.ScrollRow = 379
    ActiveWindow.ScrollRow = 321
    ActiveWindow.ScrollRow = 257
    ActiveWindow.ScrollRow = 210
    ActiveWindow.ScrollRow = 165
    ActiveWindow.ScrollRow = 147
    ActiveWindow.ScrollRow = 128
    ActiveWindow.ScrollRow = 114
    ActiveWindow.ScrollRow = 102
    ActiveWindow.ScrollRow = 99
    ActiveWindow.ScrollRow = 96
    ActiveWindow.ScrollRow = 93
    ActiveWindow.ScrollRow = 90
    ActiveWindow.ScrollRow = 84
    ActiveWindow.ScrollRow = 81
    ActiveWindow.ScrollRow = 77
    ActiveWindow.ScrollRow = 68
    ActiveWindow.ScrollRow = 64
    ActiveWindow.ScrollRow = 56
    ActiveWindow.ScrollRow = 50
    ActiveWindow.ScrollRow = 49
    ActiveWindow.ScrollRow = 45
    ActiveWindow.ScrollRow = 40
    ActiveWindow.ScrollRow = 36
    ActiveWindow.ScrollRow = 33
    ActiveWindow.ScrollRow = 25
    ActiveWindow.ScrollRow = 24
    ActiveWindow.ScrollRow = 22
    ActiveWindow.ScrollRow = 19
    ActiveWindow.ScrollRow = 16
    ActiveWindow.ScrollRow = 11
    ActiveWindow.ScrollRow = 10
    ActiveWindow.ScrollRow = 9
    ActiveWindow.ScrollRow = 7
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 1
    Range("F2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("J11").Select
J'ai l'impression que l'enregistreur n'a sélectionné que les lignes présentes à ce moment sous le filtre.

PB : tous les jours, les données vont changer et les lignes actives ne seront plus les mêmes.

Comment faire pour dire à Excel de sélectionner à chaque fois toutes les lignes actives sous le filtre ?
J'aurai 617 lignes maximum.

N'hésitez pas à me dire s'il faut plus de précision, je répondrai au plus vite.

Merci pour votre aide