Faire un tri d'après sélection et le coller dans autre feuillet

Résolu/Fermé
Greenisthenewblue Messages postés 5 Date d'inscription lundi 2 novembre 2015 Statut Membre Dernière intervention 30 octobre 2023 - 2 nov. 2015 à 13:50
 Greenisthenewblue - 2 nov. 2015 à 17:53
Bonjour à tous,

Je m'arrache les cheveux sur plusieurs posts où malgré mes recherches, je n'arrive pas à trouver la réponse.

Je souhaite faire avec VBA un tri dans une liste, et puis qu'il me copie-colle ces résultats dans le feuillet à côté. Les valeurs que je cherche sont dans la colonne I, et je voudrais qu'il repère ceux qui s'appellent ,Cst et ,Cst2.

Le problème c'est que chaque mois la liste varie et son nombre de lignes aussi, et que quand j'ai voulu faire une macro-type, il est resté sur le nombre de lignes original. Alors j'ai voulu lui donner un nombre bidon que je ne risque pas de dépasser (30 000). Mais là, comment dire, cela ne marche plus du tout !!
Y aurait-il une bonne âme pour m'aider, sachant que je développe depuis... Hier !

Merci d'avance pour votre aide...


Sub Macro2()
'
' Macro2 Macro
'

'
Selection.AutoFilter
ActiveSheet.Range("$A$1:$M$30000").AutoFilter Field:=9, Criteria1:= _
"=,CST", Operator:=xlOr, Criteria2:="=,CST2"
Range("A1:M30000").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "Cstetcst2"
End Sub

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
2 nov. 2015 à 16:04
Bonjour,

Sub Macro2()
    Selection.AutoFilter
    adr = ActiveSheet.UsedRange.Address
    ActiveSheet.Range(adr).AutoFilter Field:=9, Criteria1:="=,CST", Operator:=xlOr, Criteria2:="=,CST2"
    ActiveSheet.UsedRange.Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Feuil1").Select
    Sheets("Feuil1").Name = "Cstetcst2"
End Sub


Je pense que vous ne renommez pas le bon onglet, mais c'est vous qui voyez
0
Greenisthenewblue
2 nov. 2015 à 17:53
Super fort ! Ça marche d'enfer, merci beaucoup !!
Si j'avais su j'aurais posté plus tôt !
Je vais de ce pas me documenter sur ce adr = ActiveSheet.UsedRange.Address qui résout le problème en un rien de temps.
Merci merci merci

(et effectivement, le tableau sur lequel je travaille est une extraction d'un logiciel, du coup l'onglet est déjà nommé et m'ouvre ensuite Feuil1).
0