Macro de copier/coller après filtrage

Fermé
Ellandan Messages postés 9 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 3 mars 2010 - 3 mars 2010 à 11:14
 Migou76 - 3 mars 2010 à 19:46
Bonjour,

J'aimerais avoir une macro qui me permet de filtrer automatiquement des données, puis de copier les 10 premières lignées filtrées, et enfin de les coller dans un autre fichier. Lorsque j'ai fait "enregistrer une macro" j'ai obtenu le code suivant:

Range("A1:F46864").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("I1:I2"), Unique:=False
Range("B4984:C4993").Select
Selection.Copy

Sauf que je sais pas trop comment le bidouiller, parce qu'après filtrage les données qui m'intéresse ne seront pas toujours entre les lignes 4984 et 4993!

Merci d'avance!
A voir également:

2 réponses

Bonjour,

Une bidouille serait de commencer par trouver un point fixe, non filtré par exemple B1.
Vous l'appelez truc, puis demandez à Excel de sélectionner 10 lignes plus bas et 2 colonnes à droite :

Range("A1:F46864").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("I1:I2"), Unique:=False
truc = Range("B1").Offset(10, 2)
Machin = Range("B1")
plage = machin &":"& truc
Range(plage).Select
Selection.Copy

Je n'ai plus Excel, ne puis essayer mais dans l'esprit c'est ça !

Cordialement,
Migou
0
Re,

J'ai essayé cet APM au boulot, ça fonctionne mais pas comme je le pensais. La machine va chercher les cellules même lorsqu'elles sont cachées. Je vous laisse tout de même l'écriture exacte :
truc = Range("B1").Offset(10, 2).Address
machin = Range("B1").Offset(11, 3).Address
plage = truc & ":" & machin
Range(plage).Select

J'ai malgré tout une solution partielle :
Dans votre macro enregistrée, vous protégez le classeur au départ, puis le dé-protégez à la fin. Résultat, le copier/coller ne se fait que sur les lignes affichées. Bien entendu, vous modifiez la plage Range("B4984:C4993").Select en Range("B2:C7000").Select. Ainsi, votre macro ne copiera que les lignes visibles !
0