Ce sujet a déjà été traité, mais du fait que les données commencent en 2ème colonne
et 10ème ligne, je n'arrive pas à adapter le code.
J'ai enregistré une macro, mais comment via un bouton copier les données filtrées
de longueur variable et le filtre pouvant se faire sur une colonne ou une autre, copier
les données vers une autre feuille du même classeur.
Je vous joins un fichier exemple.
Private Sub CommandButton1_Click()
With Sheets("Base").Range("B10").CurrentRegion
.Offset(1).Resize(.Rows.Count - 1).Copy Sheets("RESULTAT_EXTRACTIONS").Range("A2")
End With
Application.CutCopyMode = False
End Sub
Sub BBBBBBBBBBBBBBBB()
With Feuil1.AutoFilter.Range
Intersect(.Columns(1).SpecialCells(xlCellTypeVisible).EntireRow, _
.EntireColumn).Copy Destination:=Feuil2.[A2]: End With
End Sub
Remarque: je n'arrive pas à le faire tourner chez moi mais ça peut être dû au fait que les .xlsm sont systématiquement mal convertis en .xls dès lors qu'il y a des contrôles dans des feuilles.
Bonjour Hasco, Paritec, Dranreb et tous les Amis du Forum.
Merci pour vos réponses respectives.
Elles fonctionnent bien.
Danreb, la macro copie systématiquement les titres.
Une autre question, est-il possible en fonction de la colonne sur laquelle se porte le filtre
de choisir sur quelle feuille copier les extractions soit une liste de choix ou un autre système.
Paritec, j'ai plusieurs feuilles, comment lui imposer de copier de la feuille "BASE" et si par rapport
à ma question de copier les données vers la feuilles souhaitées.
Pour exemple: SOLDEE - ARCHIVES - RETARDS - RETOURS - DEPRTS
Ce sont les noms des feuilles destinations en fonction de la zone filtrée.
Bonsoir Aubelix le forum
bah on peut tout faire mais tu ne l'avais pas demandé alors tu veux pouvoir choisir la direction de la copie mais
avec plusieurs boutons on comment tu vois cela?
a+
papou
Pour ne pas copier les titres on peut faire comme ça :
VB:
Sub BBBBBBBBBBBBBBBB()
Dim PlgF As Range
Set PlgF = Feuil1.AutoFilter.Range
Set PlgF = PlgF.Rows(2).Resize(PlgF.Rows.Count - 1)
Intersect(PlgF.Columns(1).SpecialCells(xlCellTypeVisible).EntireRow, _
PlgF.EntireColumn).Copy Destination:=Feuil2.[A2]
End Sub
Remarque: Si la destination dépend de ce qui a été filtré, cela peut se retrouver en explorant la collection Filters de l'objet Autofilter. C'est une collection d'objets Filter. Propriétés: On, Criteria1, Criteria2, Opérator.
Bonsoir Paritec, Dranreb et tous les Amis du Forum.
Merci Danreb, le problème est résolu.
Paritec, avec un bouton comme celui actuellement sur la feuille, mais avant la copie,
propose la liste de choix de la feuille destinataire (nom que je vous ai envoyées).
Ou un moyen simple pour toi. Mais proposer un choix de feuilles
Par avance, merci votre pour votre aide.
Cordialement.
Re aubelix le forum
bah oui c'est bien ce que je t'ai envoyé dans le post 8 tu as la liste des feuilles sauf la feuille base
en fait je fais une liste du nom de toutes tes feuilles sauf base
a+
Papou
Bonsoir Paritec, et tous les Amis du Forum.
Désolé, je n'avais pas rafraîchi mon écran.
Cela me convient tout à fait.
Une autre question est-il possible d'exclure d'autres feuilles ?
Mais sinon, cela me convient
Re aubelix le forum
oui naturellement je te met un exemple ci dessous
dans le code de l'userform tu rajoutes and sh.Name <> "Tata" pour exclure la feuille tata
a+
Papou
Code:
Private Sub UserForm_Initialize()
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Name <> "BASE" and sh.Name <> "Tata" Then C1.AddItem sh.Name
Next sh
End Sub
Désolé, de te relancer, mais sur mon application, la copie,
ne s'effectue pas. Les anciennes données sont bien effacées
mais pas de copie des données filtrées.
j'ai fait un essai en en supprimant et en remplaçant la feuille "BASE" par la véritable feuille de mon application
à savoir "INSTRUMENTS_CONTROLES".
J'ai un message d'erreur: erreur de compilation, variable non définie.
Dans module1, l'arrêt se fait sur:
Code:
Sub copier()
Sheets(feui).Range("A2:O1000").ClearContents
[B] Feuil1 [/B] .Range("B10:O" & Feuil1.Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets(feui).Range("A2")
End Sub
Pour ton info, mes filtres se font toujours sur la feuille "INSTRUMENTS_CONTROLES"
Re aubelix le forum
bah oui tu fais des demandes qui ne correspondent pas à ton vrai fichier puis après tu es incapable de le modifier!!! et de l'adapter!!!
Et c'est pas la première fois que tu me fais le coup bref je modifie le fichier et je te le renvoie
a+
Papou