Accès onglets masqués par liens hypertexte

Résolu
Bonjour,
Je cherche à accéder à tous mes onglets masqués (55) à partir du seul onglet visible "o" qui contient les liens hypertexte vers tous les onglets masqués pour les ouvrir à la demande. Les onglets ainsi ouverts devraient le rester jusqu'à l'enregistrement et la fermeture du fichier. A la réouverture du fichier, seul l'onglet "o" est visible et ainsi de suite.
Merci pour votre précieuse collaboration
Fat

4 réponses

  1. Contributeur
    Si les onglets sont masqués par un code VBA, il faut modifier le code.
    0
    1. Bonsoir,
      Je compte masquer les onglets manuellement (clic droit / masquer)
      S’il y a une solution pour l’ensemble du problème en VBA, je ne suis pas en mesure de la trouver. C’est pourquoi je sollicite votre aide.
      Cordialement
      Fat
      0
      1. Bonjour,

        Code à placer dans le module de la feuille "o", pour faire suivre le lien en démasquant la feuille :
        Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        Dim f As String
        Dim c As String
          f = Replace(Split(Target.SubAddress, "!")(0), "'", "")
          c = Split(Target.SubAddress, "!")(1)
          Sheets(f).Visible = 1
          Sheets(f).Activate
          Sheets(f).Range(c).Activate
        End Sub

        Code à placer dans le module du classeur (Workbook) pour enregistrer le fichier avec les feuilles masquées (et s'il ne s'agit pas d'une fermeture du fichier, ré-afficher les mêmes feuilles) :
        Option Explicit
        Private fermer As Boolean
        Private liste As String
        Private Sub Workbook_BeforeClose(Cancel As Boolean)
          fermer = True
        End Sub
        Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim i As Integer
          Application.ScreenUpdating = False
          i = ActiveSheet.Index
          Call MasquerFeuilles
          Application.EnableEvents = False
          ThisWorkbook.Save
          Application.EnableEvents = True
          Cancel = True
          If Not fermer Then
            Call AfficherFeuilles
            Worksheets(i).Activate
          End If
          ThisWorkbook.Saved = True
          fermer = False
          Application.ScreenUpdating = True
        End Sub
        Private Sub AfficherFeuilles()
        Dim w As Worksheet
        Dim t As Variant
        Dim i As Integer
          t = Split(liste & ":", ":")
          For i = LBound(t) To UBound(t)
            If t(i) > "" Then Worksheets(t(i)).Visible = xlSheetVisible
          Next i
        End Sub
        Private Sub MasquerFeuilles()
        Dim w As Worksheet
          With Worksheets("o")
            .Visible = xlSheetVisible
            .Activate
            liste = .Name
            For Each w In Worksheets
              If w.Index <> .Index Then
                If w.Visible = xlSheetVisible Then
                  liste = liste & ":" & w.Name
                End If
                w.Visible = xlSheetHidden
              End If
            Next w
          End With
        End Sub
        0
        1. Bonjour,
          Merci Patrice pour la solution proposée qui fonctionne très bien.
          Cordialement
          Fat
          0
          1. De rien, au plaisir de te relire sur le Forum
            0