Code VBA pour revenir sur l'onglet précédent

loulourav

XLDnaute Occasionnel
Bonjour à tous,

j'ai une macro sur mon classeur qui est présente sur tous mes onglets (13 onglets) sauf sur le dernier.
Cette macro tri des noms (qui se trouve dans le dernier onglet) dans l'ordre, chaque mois il doit être possible d’exécuter la macro pour que le tri s'effectue.
la macro fait bien ce qu'on lui demande mais je ne trouve pas quoi rajouter à " End With "pour que automatiquement après l’exécution de la macro je revienne vers l'onglet visité, car la je reste sur le dernier onglet ...

voici le code en question :

Code:
Sub TRIER_PH()
'
' TRIER_PH Macro
'

'
    Sheets("NOM").Select
    ActiveWorkbook.Worksheets("NOM").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("NOM").Sort.SortFields.Add Key:=Range("A2:A3900"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("NOM").Sort
        .SetRange Range("A1:A3900")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 =====>que mettre ici ????<======
End Sub


merci d'avance pour votre aide !:)
 

NezQuiCoule

XLDnaute Occasionnel
Re : Code VBA pour revenir sur l'onglet précédent

Bonjour loulourav, le forum,

Puisque le nom de la feuille "NOM" est spécifié clairement dans ton code, pourquoi sélectionner cette feuille au début du code ?

Ici, tu peux supprimer Sheets("NOM").Select qui n'est pas utile, et comme ça ton tableau est trié sans changer de feuille :)

Autre possibilité, si vraiment tu souhaites voir ce qui se passe pendant le tri, c'est de mémoriser le nom de ta feuille avant la macro, puis revenir sur cette feuille.

Code:
Sub TRIER_PH()
'
' TRIER_PH Macro
'

'
    FeuilleActive = ActiveSheet.Name
    Sheets("NOM").Select
    ActiveWorkbook.Worksheets("NOM").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("NOM").Sort.SortFields.Add Key:=Range("A2:A3900"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("NOM").Sort
        .SetRange Range("A1:A3900")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Sheets(FeuilleActive).Select '=====>que mettre ici ????<======
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Code VBA pour revenir sur l'onglet précédent

Bonsoir à tous, loulourav, NezQuiCoule

loulourav
Est-ce que cette version light de ta macro produit le même tri ?
Code:
Sub TRIER_PH()
With Worksheets("NOM")
.Columns(1).Sort key1:=.Range("A2"), order1:=xlAscending, Header:=xlYes
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 898
Membres
101 834
dernier inscrit
Jeremy06510