Macro Filtre par nom

Bonjour,

J'ai effectuer une macro à l'aide de l'enregistreur de macro, je souhaiterais dorénavant modifier le code pour généraliser ma formule afin qu'il soit opérationnel pour tous mes fichiers excel.

Je désirerais à l'aide de ma macro partir d'un fichier Sans filtre puis filtrer certaines colonnes en fonction de leur nom.

Pour le moment mon code ressemble a cela mais il filtre en fonction de l'emplacement de la colonne et non du nom.

Range("AB6").Select

ActiveSheet.Range("$A$1:$BE$3978").AutoFilter Field:=28, Criteria1:="<>"

ActiveSheet.Range("$A$1:$BE$3978").AutoFilter Field:=33, Criteria1:= _

"=En attente de validation", Operator:=xlOr, Criteria2:="=Validé"

Bonjour,

Pour te désengluer de l'enregistreur, supprime le Range.Select (absurde !), définit la plage filtrée sur la 1re ligne : "A1:BE1" (et tu n'écris pas une formule, donc les $ n'ont aucun intérêt !), supprime les noms d'arguments (le passage par position est tout aussi efficace !)...

Par contre, il te faudra rechercher la position des noms de champs à filtre (soit récupérer dans des variables les numéros de colonnes des champs souhaités, [numéros de colonnes puisque la colonne A correspond au champ 1...]).

Cordialement.

Bonjour,

Pour étayer les propos de MFerrand (que je salue !), je te propose de regarder l'exemple dans le fichier joint.

Cdlt.

215test-noobexcel.xlsm (24.56 Ko)

Au top les gars merci!

Petite dernière question (la last promis)

' Une partie de mon code

Sheets("Données").Select

strCol = "Saisie"

With ws

With .Cells

Set r = .Find(what:=strCol, LookIn:=xlValues, lookat:=xlWhole)

If r Is Nothing Then Exit Sub

lCol = r.Column

End With

Set rng = .Cells(2, lCol).Resize(.Cells(.Rows.Count, lCol).End(xlUp).Row - 1)

End With

rng.Copy

Sheets("Fichier Synthèse").Select

Range("J3").Select

ActiveSheet.Paste

Je ne souhaite pas que ma macro s’arrête (then exit sub Ligne 6) .... je souhaiterai que même si il n'y a rien a copier/coller la macro continu jusqu’à sa fin.

RE,

Un truc du genre, ci-dessous ?

Cdlt.

strCol = "Saisie"
    With Sheets("Données")
        With .Cells
            Set r = .Find(what:=strCol, LookIn:=xlValues, lookat:=xlWhole)
            If Not r Is Nothing Then
                lCol = r.Column
                Set Rng = .Cells(2, lCol).Resize(.Cells(.Rows.Count, lCol).End(xlUp).Row - 1)
                Rng.Copy Destination:=Sheets("Fichier Synthèse").Range("J3")
            End If
        End With
    End With
    With Sheets("Fichier Synthèse")
        .Activate
        .[J3].Select
    End With

Perfect!

J'ai un dernier soucis ! mais la je signe Jean Eric Forum Excel sur la procédure de la macro de ma boite ! :p

Comment faire en sorte de faire un filtre sur la colonne "Commentaire" plutot que

Range( _ "AB2:AB10000") ,

Mon filtre écris les commentaires dans l'ordre alphabétique.

Sheets("Données").Select

Cells.Select

Range("T1").Activate

ActiveWorkbook.Worksheets("Données").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Données").Sort.SortFields.Add Key:=Range( _

"AB2:AB10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

With ActiveWorkbook.Worksheets("Données").Sort

.SetRange Range("A1:BE10000")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Re,

Et si tu joignais un fichier ?

Cdlt.

Bonjour Jean Eric,

Je ne peux malheureusement pas joindre mon fichier de travail... C'est un fichier assez confidentiel

As tu besoin de plus de précision sur le fichier?

Je souhaiterai qu'il chope la colonne "Commentaire" par son nom plutôt que par son emplacement Range( _ "AB2:AB10000")

afin de trier mon fichier par "Commentaire" de dans l'ordre alphabétique.

Je te remercie en tout cas pour ton aide.

Comment faire en sorte de faire un trie sur la colonne "Commentaire" plutot que

Range( _ "AB2:AB10000") ,

Mon trie écris les commentaires dans l'ordre alphabétique.

Sheets("Données").Select

Cells.Select

Range("T1").Activate

ActiveWorkbook.Worksheets("Données").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Données").Sort.SortFields.Add Key:=Range( _

"AB2:AB10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

With ActiveWorkbook.Worksheets("Données").Sort

.SetRange Range("A1:BE10000")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Rechercher des sujets similaires à "macro filtre nom"