XL 2013 Liens hypertexte et onglet masqué

Roseline

XLDnaute Occasionnel
Bonjour,
J'ai besoin de votre aide. J'ai un classeur contenant environ 50 onglets qui sont masqués. A partir de ma table des matières j'ai des liens hypertexte qui renvoie automatiquement au bon onglet.
J'ai ajouté cette VBA qui fonctionne parfaitement bien. Elle ouvre l'onglet masqué lorsque je clique sur le lien et dès que je retourne à ma table des matières, l'onglet se remasque.
Mon problème: Le nom de l'onglet doit correspondre en tout point au mot dans ma table des matières. Si je n'ai pas le bon nom, ma VBA ne fonctionne plus.
Y a t'il un moyen de contourner cela?

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'Updateby Extendoffice
Application.ScreenUpdating = False
Dim strLinkSheet As String
If InStr(Target.Parent, "!") > 0 Then
strLinkSheet = Left(Target.Parent, InStr(1, Target.Parent, "!") - 1)
Else
strLinkSheet = Target.Parent
End If
Sheets(strLinkSheet).Visible = True
Sheets(strLinkSheet).Select
Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_Activate()
On Error Resume Next
Sheets(ActiveCell.Value2).Visible = False
End Sub

Merci de votre aide et bonne journée
 

laurent950

XLDnaute Barbatruc
Bonjour @Roseline,

Le code ci-dessous devrait correspondre à présent :

Suivez Le Lien Hypertexte Pour Ouvrir La Feuille Cachée, Puis Masquez-La À Nouveau Avec Le Code VBA (ci-dessous)

VB:
Public strLinkSheet As Worksheet
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
' Suivez Le Lien Hypertexte Pour Ouvrir La Feuille Cachée, Puis Masquez-La À Nouveau Avec Le Code VBA
' classeur contenant plusieurs onglets qui sont masqués
' liens hypertexte qui renvoie automatiquement au bon onglet VIA (table des matières)
' VBA Ouvre l'onglet masqué lorsque clique sur le lien
'     Avec retourne à la (table des matières)
'     Puis l'onglet est masqué de nouveau.
'
' Information : Nom de l'onglet doit correspondre au mot dans la (table des matières)
'               Msgbox Information  si différence entre les deux Noms !

    Application.ScreenUpdating = False
On Error Resume Next
    If Target.Parent.Value <> Split(Target.SubAddress, "!")(0) Then
        MsgBox "Nom de l'onglet ne correspondre pas" _
                    & vbCrLf & "au mot dans la (table des matières)" _
                        & vbCrLf & "Feuille : " _
                        & vbCrLf & "        - strLinkSheet : " & Target.Parent.Value _
                            & vbCrLf & "Différent de : " _
                                & vbCrLf & "        - table des matières : " & Split(Target.SubAddress, "!")(0)
    Else
        Set strLinkSheet = Worksheets(Target.Parent.Value)
    End If
On Error GoTo 0
    If Not strLinkSheet Is Nothing Then
        strLinkSheet.Visible = True
        strLinkSheet.Select
    End If
    Application.ScreenUpdating = True
End Sub
 
Private Sub Worksheet_Activate()
    If Not strLinkSheet Is Nothing Then
        strLinkSheet.Visible = False
        Set strLinkSheet = Nothing
    End If
End Sub

Laurent
 
Dernière édition:

Roseline

XLDnaute Occasionnel
Bonjour @Roseline,

Le code ci-dessous devrait correspondre à présent :

Suivez Le Lien Hypertexte Pour Ouvrir La Feuille Cachée, Puis Masquez-La À Nouveau Avec Le Code VBA (ci-dessous)

VB:
Public strLinkSheet As Worksheet
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
' Suivez Le Lien Hypertexte Pour Ouvrir La Feuille Cachée, Puis Masquez-La À Nouveau Avec Le Code VBA
' classeur contenant plusieurs onglets qui sont masqués
' liens hypertexte qui renvoie automatiquement au bon onglet VIA (table des matières)
' VBA Ouvre l'onglet masqué lorsque clique sur le lien
'     Avec retourne à la (table des matières)
'     Puis l'onglet est masqué de nouveau.
'
' Information : Nom de l'onglet doit correspondre au mot dans la (table des matières)
'               Msgbox Information  si différence entre les deux Noms !

    Application.ScreenUpdating = False
On Error Resume Next
    If Target.Parent.Value <> Split(Target.SubAddress, "!")(0) Then
        MsgBox "Nom de l'onglet ne correspondre pas" _
                    & vbCrLf & "au mot dans la (table des matières)" _
                        & vbCrLf & "Feuille : " _
                        & vbCrLf & "        - strLinkSheet : " & Target.Parent.Value _
                            & vbCrLf & "Différent de : " _
                                & vbCrLf & "        - table des matières : " & Split(Target.SubAddress, "!")(0)
    Else
        Set strLinkSheet = Worksheets(Target.Parent.Value)
    End If
On Error GoTo 0
    If Not strLinkSheet Is Nothing Then
        strLinkSheet.Visible = True
        strLinkSheet.Select
    End If
    Application.ScreenUpdating = True
End Sub
 
Private Sub Worksheet_Activate()
    If Not strLinkSheet Is Nothing Then
        strLinkSheet.Visible = False
        Set strLinkSheet = Nothing
    End If
End Sub

Laurent
C'est merveilleux, merci pour ta réponse, c'est d'une grande aide pour moi
Bonne journée
 

Sandrine001

XLDnaute Nouveau
Bonjour @Roseline,

Le code ci-dessous devrait correspondre à présent :

Suivez Le Lien Hypertexte Pour Ouvrir La Feuille Cachée, Puis Masquez-La À Nouveau Avec Le Code VBA (ci-dessous)

VB:
Public strLinkSheet As Worksheet
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
' Suivez Le Lien Hypertexte Pour Ouvrir La Feuille Cachée, Puis Masquez-La À Nouveau Avec Le Code VBA
' classeur contenant plusieurs onglets qui sont masqués
' liens hypertexte qui renvoie automatiquement au bon onglet VIA (table des matières)
' VBA Ouvre l'onglet masqué lorsque clique sur le lien
'     Avec retourne à la (table des matières)
'     Puis l'onglet est masqué de nouveau.
'
' Information : Nom de l'onglet doit correspondre au mot dans la (table des matières)
'               Msgbox Information  si différence entre les deux Noms !

    Application.ScreenUpdating = False
On Error Resume Next
    If Target.Parent.Value <> Split(Target.SubAddress, "!")(0) Then
        MsgBox "Nom de l'onglet ne correspondre pas" _
                    & vbCrLf & "au mot dans la (table des matières)" _
                        & vbCrLf & "Feuille : " _
                        & vbCrLf & "        - strLinkSheet : " & Target.Parent.Value _
                            & vbCrLf & "Différent de : " _
                                & vbCrLf & "        - table des matières : " & Split(Target.SubAddress, "!")(0)
    Else
        Set strLinkSheet = Worksheets(Target.Parent.Value)
    End If
On Error GoTo 0
    If Not strLinkSheet Is Nothing Then
        strLinkSheet.Visible = True
        strLinkSheet.Select
    End If
    Application.ScreenUpdating = True
End Sub
 
Private Sub Worksheet_Activate()
    If Not strLinkSheet Is Nothing Then
        strLinkSheet.Visible = False
        Set strLinkSheet = Nothing
    End If
End Sub

Laurent
Bonjour Laurent ,
J’ai essayé ce code, mais quand je clique sur le lien hypertexte. Je reçois un message qui me dit que « le nom du lien hypertexte ne correspond pas au mot dans table de matière ) quand je modifie le nom sur le lien ça ne marche toujours pas !

Merci pour ton aide
 

Discussions similaires

Statistiques des forums

Discussions
315 095
Messages
2 116 170
Membres
112 676
dernier inscrit
little_b