Accès onglets masqués par liens hypertexte

Résolu
Fat17 Messages postés 90 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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. Raymond PENTIER Messages postés 58216 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Si les onglets sont masqués par un code VBA, il faut modifier le code.
    0
  2. Fat17
     
    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
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  4. Fat17 Messages postés 90 Statut Membre
     
    Bonjour,
    Merci Patrice pour la solution proposée qui fonctionne très bien.
    Cordialement
    Fat
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      De rien, au plaisir de te relire sur le Forum
      0