Masquer et afficher des onglets en fonction du préfixe

gvives

XLDnaute Occasionnel
Bonjour à tous et bonne année,

Je cherche a créer plusieurs macros en VBA et les affecter à des boutons pour me permettre de réaliser la chose suivante :

Par exemple un classeur excel composé de 8 onglets suivants :

A1 ; A2 ; A3 ; B1 ; B2 ; B3 ; C1 et C2

Je cherche à créer les boutons suivants :

Bouton 1 : Masquer tous les onglets commençant par A
Bouton 2 : Afficher tous les onglets commençant par A
Bouton 3 : Masquer tous les onglets commençant par B
Bouton 4 : Afficher tous les onglets commençant par B
Bouton 5 : Masquer tous les onglets commençant par C
Bouton 6 : Afficher tous les onglets commençant par C

De cette façon un utilisateurs n'utilisant que les onglets A peut masquer les onglets B et C en cliquant sur le bouton 3 et 5, un utilisateur n'utilisant que les onglets B peut masquer les onglets A et C en cliquant sur les boutons 1 et 5.

Merci beaucoup pour votre aide.
 

Pièces jointes

  • Afficher et masquer.xlsxm.xlsx
    11.5 KB · Affichages: 65

Staple1600

XLDnaute Barbatruc
Re : Masquer et afficher des onglets en fonction du préfixe

Bonsoir Gérard (Comment vont les filles d’à coté?)

Bienvenue sur le Forum


Fais un choix camarade ;)

Avec macros: c'est xls ou xlsm mais pas xlsx et encore moins xlsm.xlsx ;)

EDITION: un exemple de solution sommaire
Code:
Private Sub m(x$)
Dim s As Worksheet
For Each s In Worksheets
s.Visible = IIf(Left(s.Name, 1) = x, xlSheetHidden, xlSheetVisible)
Next
End Sub
Exemple pour préfixe A
VB:
Sub masqueA() ' pour tester lancer cette macro
m "A" ' ou tu mets cette seule ligne code dans le code du bouton1 (et tu adaptes pour les autres boutons)
End Sub

EDITION: Salut job75, meilleurs voeux également ;)
 
Dernière édition:

gvives

XLDnaute Occasionnel
Re : Masquer et afficher des onglets en fonction du préfixe

Salut Staple1600 !! Les filles d'a côté vont très bien je te rassure ;) !! (mais moi c'est Gaëtan mdr)

Ta solution est parfaite à l'exception d'une chose, lorsque je clic sur le bouton 1 et ensuite sur le bouton 3 je souhaite masquer à la fois les onglets A et les onglets B pour ne laisser que les onglets C.

Le problème ici c'est que lorsque je clic successivement sur le bouton 1 puis le bouton 3 les onglets A réapparaissent et je me retrouve avec les onglets A et C (Je sais c'est un peu folclo mon truc mais c'est vraiment nécessaire dans ma situation)...

Je te remercie beaucoup pour ton aide ;)
 

job75

XLDnaute Barbatruc
Re : Masquer et afficher des onglets en fonction du préfixe

Bonjour gvives, salut Jean-Marie, mes meilleurs voeux pour 2012 :)

Affecter aux 6 boutons (formes) cette macro :

Code:
Sub AfficheMasque()
Dim txt As String, test As Boolean, der As String, s As Object
txt = Trim(ActiveSheet.DrawingObjects(Application.Caller).Text)
test = txt Like "Affiche*"
der = Right(txt, 1)
For Each s In Sheets
  If s.Name <> "Accueil" And Left(s.Name, 1) = der Then s.Visible = test
Next
End Sub
Fichier .xls joint, la macro est dans Module1 (Alt+F11).

La feuille des boutons est nommée Accueil : c'est la seule à ne jamais être masquée.

A+
 

Pièces jointes

  • Afficher et masquer(1).xls
    65.5 KB · Affichages: 76

job75

XLDnaute Barbatruc
Re : Masquer et afficher des onglets en fonction du préfixe

Re,

3 boutons c'est peut-être mieux que 6, non ?

La macro :

Code:
Sub AfficheMasque()
Dim der As String, test As Boolean, s As Object
With ActiveSheet.DrawingObjects(Application.Caller)
  der = Right(Trim(.Text), 1)
  test = Trim(.Text) Like "Affiche*"
  .Text = Replace(.Text, IIf(test, "Affiche", "Masque"), IIf(test, "Masque", "Affiche"))
End With
With ActiveSheet.Shapes(Application.Caller)
  .Fill.ForeColor.RGB = IIf(test, RGB(155, 187, 89), RGB(79, 129, 189))
  .Line.ForeColor.RGB = IIf(test, RGB(113, 137, 63), RGB(56, 93, 138))
End With
For Each s In Sheets
  If s.Name <> "Accueil" And Left(s.Name, 1) = der Then s.Visible = test
Next
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Afficher et masquer(2).xls
    68.5 KB · Affichages: 59
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise