[RESOLU] Masquage onglets inactifs

Annette

XLDnaute Occasionnel
Bonsoir le forum,

Après avoir cherché ici (notamment dans un de mes précédents posts) et là, je n'ai pu trouver de réponses adéquates à mon problème, à savoir:

Je dispose d'un classeur composé de 36 onglets dont un nommé Accueil.
Mon classeur s'ouvre systématiquement sur l'onglet Accueil et j'ai 35 onglets visibles.
Par souci d'esthétisme, je souhaite masquer les 35 onglets "inactifs".
Je précise que des liens hypertextes me permettent de naviguer dans les différents onglets sans cliquer sur ces derniers.
Le but de la manœuvre étant de n'afficher qu'un seul onglet (onglet actif).

Merci pour vos suggestions.

Cordialement
 

Pièces jointes

  • onglets cachés.xlsm
    8.8 KB · Affichages: 30
Dernière édition:

job75

XLDnaute Barbatruc
Re : Masquage onglets inactifs

Bonjour Annette,

Dans ThisWorkbook :

Code:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim s As Object
Sheets("Accueil").Visible = xlSheetVisible 'sécurité
For Each s In Sheets
  If s.Name <> "Accueil" Then s.Visible = xlVeryHidden 'xlSheetHidden
Next
On Error Resume Next
With Sheets(Format(Target.Parent, "00"))
  .Visible = xlSheetVisible
  .Activate
End With
End Sub
A+
 
Dernière édition:

Annette

XLDnaute Occasionnel
Re : Masquage onglets inactifs

Bonsoir job75, bonsoir le forum,

Merci beaucoup pour votre réponse.
Parallèlement à ma demande, je continuais de chercher et suis tombée sur ceci:

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
On Error Resume Next
Set ws = Sheets(Target.Name)
If Not ws Is Nothing Then
ws.Visible = True
Sh.Visible = False
End If
On Error GoTo 0
End Sub

Code de DoubleZero remanié par Kjin sur ce forum

Job75, pour votre code après essais, je me suis aperçue que lorsque j'étais dans l'onglet Accueil et que je cliquais sur "2", l'onglet 01 apparaissait mais l'onglet Accueil restait visible. "3" est devenu inactif.

Cordialement
 

job75

XLDnaute Barbatruc
Re : Masquage onglets inactifs

Re,

Autre manière qui masque aussi l'onglet "Accueil" :

Code:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim s As Object
On Error Resume Next
With Sheets(Format(Target.Parent, "00"))
  .Visible = xlSheetVisible
  .Activate
End With
For Each s In Sheets
  If s.Name <> ActiveSheet.Name Then s.Visible = xlVeryHidden 'xlSheetHidden
Next
End Sub
Mais normalement on ne masque pas un tel onglet...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Masquage onglets inactifs

Re,

Ceci est mieux car SubAddress fait abstraction de ce qu'il y a dans la cellule du lien hypertexte :

Code:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim s As Object
On Error Resume Next
With Evaluate(Target.SubAddress).Parent
  .Visible = xlSheetVisible
  .Activate
End With
For Each s In Sheets
  If s.Name <> ActiveSheet.Name Then s.Visible = xlVeryHidden 'xlSheetHidden
Next
End Sub
A+
 

Si...

XLDnaute Barbatruc
Re : Masquage onglets inactifs

salut

les liens étant rattachés à des cellules, pourquoi ne pas le supprimer ? On se contenterait, dans ThisWorkbook de
VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal R As Range)
  If R = "Accueil" Then Feuil1.Visible = 1: ActiveSheet.Visible = 2
  If Sh.Name = "Accueil" Then
    If R.Address = "$B$2" Then Feuil2.Visible = 1: ActiveSheet.Visible = 2 'une simplification Si... noms précis
     If R.Address = "$C$2" Then Feuil3.Visible = 1: ActiveSheet.Visible = 2
  End If
  [A1].Select
End Sub
 

Pièces jointes

  • OngletsCachésSi.xlsm
    18.8 KB · Affichages: 26

Annette

XLDnaute Occasionnel
Re : Masquage onglets inactifs

Bonsoir Si..., bonsoir le forum,

Si..., j'ai pensé à votre solution (déjà fournie lors d'un précédent post), mais j'ai 36 onglets :rolleyes:... et je suis un peu fainéante :rolleyes: .
Job75, merci pour la modification et l'amélioration de vos codes.
Merci à vous deux, vos solutions fonctionnent très bien et offrent du choix.

Merci à vous, merci au forum.

Cordialement
 

Si...

XLDnaute Barbatruc
Re : [RESOLU] Masquage onglets inactifs

Re

Entre nous (chut, un secret est une chose que l’on rapporte qu’à une personne à la fois) étant aussi partisan du moindre effort, je recherche à chaque fois le moins à faire, à écrire, bref le plus basique et le plus simple (à mes yeux).

Mais il n’est pas sûr qu’ici ce soit le cas avec 36 liens "hypertexte" sauf bien entendu à tout refaire. Et là, tout dépend de la préparation des étapes du projet qui relève d'une toute autre histoire.

Bon continuation
 

job75

XLDnaute Barbatruc
Re : [RESOLU] Masquage onglets inactifs

Bonjour Annette, Si...

L'inconvénient des liens hypertextes est qu'ils ne conduisent pas aux feuilles "Graphique".

Alors voyez le fichier joint et cette macro dans Module1 :

Code:
Sub Feuilles()
Dim s As Object
On Error Resume Next
Set s = Sheets(ActiveCell.Text)
Set s = Sheets(ActiveSheet.DrawingObjects(Application.Caller).Text)
If Not s Is Nothing Then [A1].Select
s.Visible = xlSheetVisible
s.Activate
For Each s In Sheets
  If s.Name <> ActiveSheet.Name Then s.Visible = xlVeryHidden 'xlSheetHidden
Next
End Sub
Elle est appelée par la macro SheetSelectionChange ou par des boutons "Formulaire".

A+
 

Pièces jointes

  • onglets cachés(1).xls
    44 KB · Affichages: 24

Annette

XLDnaute Occasionnel
Re : [RESOLU] Masquage onglets inactifs

Bonjour job75, Si..., le forum,

Re

Entre nous (chut, un secret est une chose que l’on rapporte qu’à une personne à la fois) étant aussi partisan du moindre effort, je recherche à chaque fois le moins à faire, à écrire, bref le plus basique et le plus simple (à mes yeux).

Si..., je suis totalement d'accord avec vous ... :)

job75, merci pour ce nouveau code qui me servira très probablement pour un autre classeur ;).

Un grand merci à tous les deux et au forum.

Cordialement
 

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia