Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU] Masquage onglets inactifs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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:
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
 
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:
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+
 
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

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 🙄... et je suis un peu fainéante 🙄 .
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
 
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
 
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

Re : [RESOLU] Masquage onglets inactifs

Bonjour job75, Si..., le forum,


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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…