MAcro pour filtrer, couper, coller sur une autre feuille, et trier.

Menaceclan

XLDnaute Nouveau
Bonjour à tous,
Ceci est ma première demande sur le forum.. et sur un forum tout court d’ailleurs ..
Je vous présente donc mes excuses d’avance si d’aventure je venais à faire une entorse au règlement intérieur.

Ma demande est la suivante. Sur un même classeur, j’essaie de partir d’un tableau A sur une feuille A, y faire un filtre sur une colonne précise, couper les lignes filtrées, les coller en bas d’un tableau similaire B situé sur une autre feuille B, et ensuite trier le dit tableau B sur une colonne.
Je l’ai fait avec l’enregistreur de macro, mais le problème c’est qu’évidemment ca ne marche que pour les lignes présentes, c’est-à-dire que la prochaine fois que je voudrais mettre mes lignes coupées à la suite de mon tableau, la dernière ligne du tableau B ne sera plus la même qu’aujourd’hui…
J’ai bien essayé de parcourir le forum en me doutant que le cas avait déjà été abordé, mais je rencontre le même problème, à savoir que les macros marchent pour le cas spécifique, mais pas pour après..
J’espère avoir été clair, et je suis certain que quelqu’un peut me venir en aide…:)
 

Dranreb

XLDnaute Barbatruc
Re : MAcro pour filtrer, couper, coller sur une autre feuille, et trier.

Bonjour.
Modifier le code pour qu'il travaille par exemple avec ActiveSheet.UsedRange.Columns(...
à la place des plages fixes engendrées par l'enregistreur de macro.
Un autre truc très utilisé c'est .End(xlUp) et .End(xlDown) mais attention aux cellules vides.
Il y a aussi .CurrentRegion, et .SpecialCells(xlCellTypeLastCell), chaque solution a ses avantages et ses inconvénients.
Si la feuille est équipée d'une zone d'impression on peut aussi se baser sur Range(ActiveSheet.PageSetup.PrintArea)
Si elle comporte un filtre automatique, sur ActiveSheet.AutoFilter.Range
Conseil: fixer par Set dans une variable As Range la plage à traiter et travailer avec ses .Columns
Ma solution favorite c'est de donner un nom (j'utilise généralement "Tablo" comme nom propre à la feuille) à l'ensemble des lignes de tableau et de faire Feuil1.[Tablo].Colums(... Mais cela implique de toujours veiller à insérez un nombre de lignes nécessaires avant la dernière ou de supprimer celles en trop avant de garnir les colonnes.
Parmi les methodes qui peuvent avoir leur utilité pour initialiser une variable de type Range il y a aussi:
Intersect qui rend l'intersection entre deux plages,
.Row qui donne le numéro de la première ligne d'un autre Range,
.Rows.Count qui donne son nombre de lignes,
.Resize qui définit une plage redimensionnée par rapport à lui en lignes et éventuellement colonnes,
.Offset qui définit une plage décalée. Combinez tout cela de façon appropriée à vos besoins.
Joignez votre classeur muni de la macro enregistrée si vous voulez que j'y apporte une forme d'auto-adaptativité comme exemple.
À+
 
Dernière édition:

Menaceclan

XLDnaute Nouveau
Re : MAcro pour filtrer, couper, coller sur une autre feuille, et trier.

Merci à vous ..
..j'aurai dû préciser que j'étais archi débutant en VBA lol ...mais j'ai à coeur d'apprendre vite .. aussi, je vais essayer de mettre en appli tout ce que vous me conseillez ..
Bonne journée...
 

Discussions similaires

Statistiques des forums

Discussions
311 718
Messages
2 081 866
Membres
101 827
dernier inscrit
kubinou