Accès onglets masqués par liens hypertexte

Résolu/Fermé
Fat17 Messages postés 87 Date d'inscription vendredi 25 août 2017 Statut Membre Dernière intervention 30 mars 2021 - 27 juin 2018 à 17:23
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 28 juin 2018 à 13:09
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

Raymond PENTIER Messages postés 58393 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 avril 2024 17 096
27 juin 2018 à 18:40
Si les onglets sont masqués par un code VBA, il faut modifier le code.
0
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
27 juin 2018 à 19:51
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
Fat17 Messages postés 87 Date d'inscription vendredi 25 août 2017 Statut Membre Dernière intervention 30 mars 2021
28 juin 2018 à 12:25
Bonjour,
Merci Patrice pour la solution proposée qui fonctionne très bien.
Cordialement
Fat
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
28 juin 2018 à 13:09
De rien, au plaisir de te relire sur le Forum
0