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 !
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.
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
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
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
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
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
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
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.
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
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
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.
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.
- 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