Afficher/Masquer onglets

sarsargna

XLDnaute Nouveau
Bonjour,

J'ai un fichier Excel ou il y a plusieurs onglets (+ de 50)
Comment puis-je faire pour juste en entrant un nouveau nom dans l'onglet "PERSONNE" ou en effaçant un nom dans le même onglet, que l'onglet correspondant s'affiche ou se cache.

Attention s'il y a un couple on met le nom et on rajoute "2" dans une cellule et là il faut que l'onglet apparaissent en double.


J'ai pensé à une macro qui se base sur deux cellules.
Une qui affiche "oui" ou "non" (s'il y a une personne dans la chambre)
Et l'autre 1 ou 2 (1 pour célibataire et 2 pour couple)

Si c'est oui la macro fait en sorte que l'onglet s'affiche et si c'est non la macro n'apparaît pas ou disparaît.

Enfin s'il y a un 1 il va chercher le nom de la cellule "APPARTEMENTS" et il l'affiche par contre s'il y a 2 il doit aller chercher le nom des cellules "APPARTEMENTS" ET "APPARTEMENTS" et ils les affichent.

J'ai vu que je pouvais créer un bouton pour afficher/masquer les onglets....Mais quel est la macro qu'il y a derrière ce bouton.

Voici un exemple de fichier

Merci d'avance pour votre aide
 

Pièces jointes

  • ClasseurTEST.xlsx
    15 KB · Affichages: 39
  • ClasseurTEST.xlsx
    15 KB · Affichages: 44
  • ClasseurTEST.xlsx
    15 KB · Affichages: 47

bbb38

XLDnaute Accro
Re : Afficher/Masquer onglets

Bonjour sarsargna, le forum,
Comment puis-je faire pour juste en entrant un nouveau nom dans l'onglet "PERSONNE" ou en effaçant un nom dans le même onglet, que l'onglet correspondant s'affiche ou se cache.
Trop tard ou trop tôt (l’heure), mais je ne vois pas l’onglet « PERSONNE » dans ton fichier.
Les noms mentionnés dans les cellules de C3 à C7 ne correspondent pas aux noms des onglets.
Par contre, en bas de ton message #1, tu as d’excellentes propositions dans « Discussions similaires ».
Cordialement,
Bernard
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Afficher/Masquer onglets

Bonjour Sansargna, Bernard , les ami(e)s du forum,

Voici un essai avec les quelques fonctions vba nécessaires pour la gestions des onglets.

intégrées dans le classeur attaché .

La fonction Onglet_Ok permet de savoir si l'onglet définit par NOM est présent dans le classeur actif

La procédure Masque_Onglet permet de cacher l'onglet définit par NOM

La procédure Montre_Onglet permet d'afficher l'onglet définit par NOM

La procédure Scrute parcours le tableau pour affichage ou masquage des onglet

La procédure Affiche_Tous permet de révéler l'ensemble des onglets

Cordialement,

Code:
Function Onglet_Ok(Nom As String) As Boolean
Dim Feuille As Worksheet
Dim Réponse As Boolean
Réponse = False
For Each Feuille In ThisWorkbook.Worksheets
 If Feuille.Name = Nom Then Réponse = True: Exit For
Next
Onglet_Ok = Réponse
End Function

Sub Masque_Onglet(Nom As String)
If Onglet_Ok(Nom) Then Sheets(Nom).Visible = False
End Sub

Sub Montre_Onglet(Nom As String)
If Onglet_Ok(Nom) Then Sheets(Nom).Visible = True
End Sub

Sub Scrute()
'Scrute colonne D de la ligne  2 à 7
Dim Tourne As Long
For Tourne = 2 To 7
Select Case Range("d" & Tourne)
Case "OUI"
  Montre_Onglet Range("b" & Tourne)
  Montre_Onglet Range("c" & Tourne)
Case "NON"
  Masque_Onglet Range("b" & Tourne)
  Masque_Onglet Range("c" & Tourne)
End Select
Next Tourne
End Sub

Sub Affiche_tous()
Dim Feuille As Worksheet
For Each Feuille In ThisWorkbook.Worksheets
 Montre_Onglet Feuille.Name
Next
End Sub
 

Pièces jointes

  • Visibilité_onglet.xlsm
    28.6 KB · Affichages: 28

sarsargna

XLDnaute Nouveau
Re : Afficher/Masquer onglets

Bonjour sarsargna, le forum,

Trop tard ou trop tôt (l’heure), mais je ne vois pas l’onglet « PERSONNE » dans ton fichier.
Les noms mentionnés dans les cellules de C3 à C7 ne correspondent pas aux noms des onglets.
Par contre, en bas de ton message #1, tu as d’excellentes propositions dans « Discussions similaires ».
Cordialement,
Bernard


!oui tu as raison il y a des erreurs.....Je pense qu'hier mes yeux m'ont joué des tours lol

Voici le fichier corrigé
 

Pièces jointes

  • ClasseurTEST.xlsx
    15.1 KB · Affichages: 35
  • ClasseurTEST.xlsx
    15.1 KB · Affichages: 40
  • ClasseurTEST.xlsx
    15.1 KB · Affichages: 33

sarsargna

XLDnaute Nouveau
Re : Afficher/Masquer onglets

Bonjour Sansargna, Bernard , les ami(e)s du forum,

Voici un essai avec les quelques fonctions vba nécessaires pour la gestions des onglets.

intégrées dans le classeur attaché .

La fonction Onglet_Ok permet de savoir si l'onglet définit par NOM est présent dans le classeur actif

La procédure Masque_Onglet permet de cacher l'onglet définit par NOM

La procédure Montre_Onglet permet d'afficher l'onglet définit par NOM

La procédure Scrute parcours le tableau pour affichage ou masquage des onglet

La procédure Affiche_Tous permet de révéler l'ensemble des onglets

Cordialement,

Code:
Function Onglet_Ok(Nom As String) As Boolean
Dim Feuille As Worksheet
Dim Réponse As Boolean
Réponse = False
For Each Feuille In ThisWorkbook.Worksheets
 If Feuille.Name = Nom Then Réponse = True: Exit For
Next
Onglet_Ok = Réponse
End Function

Sub Masque_Onglet(Nom As String)
If Onglet_Ok(Nom) Then Sheets(Nom).Visible = False
End Sub

Sub Montre_Onglet(Nom As String)
If Onglet_Ok(Nom) Then Sheets(Nom).Visible = True
End Sub

Sub Scrute()
'Scrute colonne D de la ligne  2 à 7
Dim Tourne As Long
For Tourne = 2 To 7
Select Case Range("d" & Tourne)
Case "OUI"
  Montre_Onglet Range("b" & Tourne)
  Montre_Onglet Range("c" & Tourne)
Case "NON"
  Masque_Onglet Range("b" & Tourne)
  Masque_Onglet Range("c" & Tourne)
End Select
Next Tourne
End Sub

Sub Affiche_tous()
Dim Feuille As Worksheet
For Each Feuille In ThisWorkbook.Worksheets
 Montre_Onglet Feuille.Name
Next
End Sub


Merci pour ta réponse

Par contre dans ton fichier la macro ne gère pas les onglet bis.
Je pense qu'il faut si possible ajouter une condition du type

Si dans la cellule affichage il y a OUI alors si il y'a 1 on affiche l'onglet dont le nom se trouve dans APPARTEMENTS, sinon s'il y a
on affiche les onglets dont le noms se trouvent dans APPARTEMENTS et APPARTEMENTS1

Merci
 

Efgé

XLDnaute Barbatruc
Re : Afficher/Masquer onglets

Bonjour à tous
Une proposition qui ne répond pas directement à la question, plutot une interprétation:
Un clic sur un nom de feuille affiche ou masque la feuille concernée suivant la situation.
Deux faux boutons ; un pour tout afficher, un pour tout masquer.
Le code est dans le module de la feuille.
Cordialement
 

Pièces jointes

  • ClasseurTEST(2).xlsm
    27.5 KB · Affichages: 47
  • ClasseurTEST(2).xlsm
    27.5 KB · Affichages: 62
  • ClasseurTEST(2).xlsm
    27.5 KB · Affichages: 65

sarsargna

XLDnaute Nouveau
Re : Afficher/Masquer onglets

Bonjour à tous
Une proposition qui ne répond pas directement à la question, plutot une interprétation:
Un clic sur un nom de feuille affiche ou masque la feuille concernée suivant la situation.
Deux faux boutons ; un pour tout afficher, un pour tout masquer.
Le code est dans le module de la feuille.
Cordialement

Merci de ta participation, mais j'ai vraiment besoin d'une réponse à ma question.
Dans le vrai fichier, j'ai plus de 50 onglets donc j'ai réellement besoin d'un affichage conditionné.

Mais le bouton tout afficher doit apparaître dans mon fichier, on pourrait en avoir besoin.
 

sarsargna

XLDnaute Nouveau
Re : Afficher/Masquer onglets

Re

Je comprends que ne soit pas la réponses exacte à la question, mais quelque soit le nombre d'onglet, l'affichage / masquage est conditionné au clic sur le nom de l'onglet dans la liste....
Cordialement

Ouppssss j'avais pas vu....C'est pas mal ça à l'air d'etre bien efficace (voir mieux :) )

Par contre est ce qu'il est possible pour toi de me faire un petit tuto pour pouvoir installer cette macro sur mon VRAI fichier stp
Merci encore
 

Efgé

XLDnaute Barbatruc
Re : Afficher/Masquer onglets

Re
Le tuto est vite fait, tout est clair dans le code.
Le code est dans le module de la feuille PERSONNE.
On défini une plage (Set Plg =...) qui prend en compte la plage $B$2:$C jusqu'a la dernière ligne remplie en colonne B
Si la cellule selectionnée est dans la plage (Not Intersect(Target, Plg) Is Nothing) on affiche ou masque (....Visible = Not .....Visible ) la feuille qui porte le nom de ce qui est écrit dans la cellule selectionnée.

Si la l'adresse de la cellule selectionnée est F2, on Masque toute les feuilles sauf la feuille active (Donc la feuille PERSONNE).

Si l'adresse de la cellule selectionnée est F3 on affiche toutes les feuilles.

Cordialement
 

sarsargna

XLDnaute Nouveau
Re : Afficher/Masquer onglets

Re
Le tuto est vite fait, tout est clair dans le code.
Le code est dans le module de la feuille PERSONNE.
On défini une plage (Set Plg =...) qui prend en compte la plage $B$2:$C jusqu'a la dernière ligne remplie en colonne B
Si la cellule selectionnée est dans la plage (Not Intersect(Target, Plg) Is Nothing) on affiche ou masque (....Visible = Not .....Visible ) la feuille qui porte le nom de ce qui est écrit dans la cellule selectionnée.

Si la l'adresse de la cellule selectionnée est F2, on Masque toute les feuilles sauf la feuille active (Donc la feuille PERSONNE).

Si l'adresse de la cellule selectionnée est F3 on affiche toutes les feuilles.

Cordialement

En fait je voulais surtout savoir comment créer les deux boutons sur le cotés stp
 

Discussions similaires

Réponses
16
Affichages
674

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso