Macro sur feuille active

Bonjour le forum

J'ai créée une macro et je l'ai dupliqué sur tout mes onglets pour lesquelles j'en ai besoin.

Sub FormeEtClasseCopierTrier()
'
' FormeEtClasseCopierTrier Macro
'

'
    Rows("72:91").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=97
    Range("A177").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveSheet.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("R3C1").Sort.SortFields.Add Key:=Range("A177"),
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("R3C1").Sort
        .SetRange Range("A177:DD196")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Elle ne fonctionne que sur l'onglet " R3C1" (ce que je comprends.

Comment faire pour qu'elle puisse fonctionner lorsque l'onglet est actif ?

j'ai bien tenté de remplacer "ActiveWorkbook.Worksheets("R3C1")" par "ActiveSheet" mais dans ce cas j'ai une erreur de syntaxe sur "SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal"

Si vous avez une solution...

Amicalement

François

Bonjour François, bonjour le forum,

Essaie comme ça :

Sub FormeEtClasseCopierTrier()
Dim O As Worksheet

Set O = ActiveSheet
O.Rows("72:91").Copy Range("A177")

O.Sort.SortFields.Clear
O.Sort.SortFields.Add Key:=O.Range("A177"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With O.Sort
    .SetRange O.Range("A177:DD196")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

Super !

Un grand merci ThauTheme cela fonctionne parfaitement

Amicalement

Francois

Rechercher des sujets similaires à "macro feuille active"