Retourner à l'onglet actif précédent

Bonjour à tous,

J’ai une question pratique.

J’ai un onglet caché nommé « 1 » que je souhaite faire apparaître via un bouton sur l’onglet « detail ». J’ai donc un bouton sur l’onglet « detail » qui me permet d’afficher l’onglet « 1 » :

Sub afficher()

Sheets("1").Visible = True

Sheets("1").Select

Range("A5").Select

End sub

Ensuite je souhaite fermer l’onglet "1" et retourner à l’onglet précédent sans le nommer. L'idée étant de dupliquer la macro avec d'autres onglets...

J’ai récupérer cette macro sur le forum mais je bloque un peu….

Dim feuille As Worksheet

Dim cell As Range

ActiveSheet.Unprotect ("")

If MsgBox("Voulez-vous vraiment fermer l'onglet actif?", vbYesNo) = vbYes Then

Application.ScreenUpdating = False

ActiveWindow.SelectedSheets.Visible = False

Sheets("Sommaire").Select --> comment faire pour lui indiquer de retourner à l'onglet actif précédent ?

On Error Resume Next

Application.ScreenUpdating = True

End If

Avez-vous des idées ?

Merci beaucoup !

Bonjour,

Tu pourrais déclarer une variable globale avec le nom de la feuille active. Une variable globale est accessible en dehors des macros, et est à déclarer en dehors de toute procédure.

https://www.excel-pratique.com/fr/vba/variables_suite

Bonjour à tous,

Je n'ai pas bien compris

L'idée étant de dupliquer la macro avec d'autres onglets...

Ni ce que venais faire ici le On Error Resume Next. A réserver pour un vrai traitement d'erreur, pas pour cacher la poussière sous le tapis

Sinon, dans un module standard :

Public shPrecedent As Worksheet

dans ThisWorkbook :

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Set shPrecedent = Sh
End Sub

Merci, j'ai apporté les modifications mais la macro ne revient pas sur l'avant dernière feuille active...

Public shPrecedent As Worksheet

Sub Cacheronglet()

Dim feuille As Worksheet

Dim cell As Range

Dim Sh As Sheets

ActiveSheet.Unprotect ("")

If MsgBox("Voulez-vous vraiment fermer l'onglet actif?", vbYesNo) = vbYes Then

Application.ScreenUpdating = False

ActiveWindow.SelectedSheets.Visible = False

Application.ScreenUpdating = True

End If

End Sub

J'ai trouvé un code qui semble fonctionner. J'ai donc la feuille "synthèse" avec une macro qui me permet d'afficher la feuille "1":

Sub afficher()

Sheets("1").Visible = True

Sheets("1").Select

Range("A5").Select

End sub

Et une deuxième macro sur la feuille "1" qui me sert à revenir à l'onglet actif avant l'exécution de la macro 1 (et qui ne prends pas en compte le nom de la feuille). Dans cet exemple on reviendra donc à la feuille "synthèse".

Dans ThisWorkbook:

Private Sub Workbook_SheetDeActivate(ByVal Sh As Object)

Me.BuiltinDocumentProperties("subject") = Sh.Name

End Sub

Dans le module :

Sub Cacheronglet()

On Error Resume Next

Application.Goto Sheets(ThisWorkbook.BuiltinDocumentProperties("subject").Value).Cells(1)

End Sub

Par contre maintenant, j'aimerai pouvoir lui indiquer de fermer la feuille "1" (sans la nommer) lors de l'exécution de la macro 2. Il faut donc passer par une variable ...

Sub Cacheronglet()

Dim var1 As Worksheet

Set var1 = ActiveSheet

On Error Resume Next

Application.Goto Sheets(ThisWorkbook.BuiltinDocumentProperties("subject").Value).Cells(1)

If MsgBox("Voulez-vous vraiment fermer l'onglet actif?", vbYesNo) = vbYes Then

Application.ScreenUpdating = False

ActiveWindow.var1.Visible = False

Application.ScreenUpdating = True

End If

End Sub

Mais ça ne fonctionne pas pour le moment. Une idée ?

Merci !

Bonjour,

Voir PJ.

Option Explicit

Public shPrecedente$

Sub afficher_1()
    shPrecedente = ActiveSheet.Name
    Sheets("1").Visible = True
    Sheets("1").Activate
    Sheets("1").Range("A5").Select
End Sub

Sub afficher_fprecedente()
    If MsgBox("Voulez-vous vraiment fermer l'onglet actif?", vbYesNo) = vbYes Then
        ActiveSheet.Visible = False
        Worksheets(shPrecedente).Activate
    End If
End Sub
23afficher.xlsm (22.66 Ko)

Bonjour,

Merci, j'ai apporté les modifications mais la macro ne revient pas sur l'avant dernière feuille active...

c'est à toi de sélectionner shPrecedent au moment où tu veux

Par ailleurs inutile de compliquer avec BuiltinDocumentProperties si tu n'as pas besoin de pouvoir le faire à l'ouverture du fichier.

eric

Merci à vous deux pour ces explications. C'est super sympa !

Rechercher des sujets similaires à "retourner onglet actif precedent"