Autres Masquer/Afficher onglets avec une seule macro

Oliver77

XLDnaute Occasionnel
Bonsoir,

Pour masquer ou afficher plusieurs onglets j'ai 2 procédures que je souhaite regrouper en 1 seule.
Les voici :
1/Masquer :
For c5i = 1 To Sheets.Count
If Left(Sheets(c5i).Name, 4) = "C05_" Then Sheets(c5i).Visible = False
Next c5i
Next

2/Afficher :
For c5i = 1 To Sheets.Count
If Left(Sheets(c5i).Name, 4) = "C05_" Then Sheets(c5i).Visible = True
Next c5i
Next

Trois jours que je parcours le net...
Je trouve des demi-solutions.

Merci par avance.
Oliver77
 

Pièces jointes

  • Test_2021.01.19_Onglets.xlsm
    54.5 KB · Affichages: 12

soan

XLDnaute Barbatruc
Inactif
Bonsoir Oliver,

ton fichier en retour. :)

VB:
Sub HideShow()
  Dim i%: Application.ScreenUpdating = 0
  For i = 1 To Worksheets.Count
    With Worksheets(i)
      If Left$(.Name, 4) = "C05_" Then .Visible = Not .Visible
    End With
  Next i
End Sub

soan
 

Pièces jointes

  • Test_2021.01.19_Onglets.xlsm
    54.6 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Oliver77, soan

=>Oliver77
Trois jours que je parcours le net...
Pourtant, on a en cela en stock dans les archives du forum ;)
Et ci-dessous, macro adaptée, 11 ans après, pour la question de ce fil ( mais sans le If, ce qui fait du code un chouia plus court)
(mais mieux vaut que toutes les feuilles ne commencent pas par CO5)
;)
VB:
Sub MasquerAfficher()
Dim c As Worksheet
On Error Resume Next
For Each c In Worksheets
c.Visible = Left(c.Name, 4) = "C05_" = Not c.Visible
Next
End Sub
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@Oliver77, Staple, le fil,

ajout à mon post #2 :

si tu es sûr que les feuilles "C05_" seront toujours à droite de la feuille "P05",
alors tu peux accélérer la macro en évitant le test des 4 premières feuilles :

remplace For i = 1 To Worksheets.Count par For i = 5 To Worksheets.Count

mais tu dois commencer par 5, au cas où il n'y aurait aucune feuille "C05_",
car avec 6, ça planterait, la 6ème feuille n'existant pas.


soan
 
Dernière édition:

Oliver77

XLDnaute Occasionnel
Bonsoir le fil, Oliver77, soan

=>Oliver77

Pourtant, on a en cela en stock dans les archives du forum ;)
Et ci-dessous, macro adaptée, 11 ans après, pour la question de ce fil ( mais sans le If, ce qui fait du code un chouia plus court)
(mais mieux vaut que toutes les feuilles ne commencent pas par CO5)
;)
VB:
Sub MasquerAfficher()
Dim c As Worksheet
On Error Resume Next
For Each c In Worksheets
c.Visible = Left(c.Name, 4) = "C05_" = Not c.Visible
Next
End Sub
[/code
[/QUOTE]

Salut & merci !😇
 

Discussions similaires

Réponses
11
Affichages
285

Statistiques des forums

Discussions
312 165
Messages
2 085 881
Membres
103 009
dernier inscrit
dede972