Bonjour à tous,
une autre solution, basée sur le nom des feuilles du classeur joint:
dans la feuille de code ThisWorkBook:
Private Sub Workbook_Open()
MaskInit
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Cherch As String, Feuil As Worksheet
Application.ScreenUpdating = False
Cherch = "*" & Left(Sh.Name, InStr(Sh.Name, ".")) & "*"
MaskInit
Application.EnableEvents = False
For Each Feuil In Worksheets
If Sh.Name <> "Synthèse Globale" Then
If Feuil.Name Like Cherch Then Feuil.Visible = True
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
et dans un module standard:
Sub MaskInit()
Dim Sh As Worksheet
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each Sh In Worksheets
If Sh.Name = "Synthèse Globale" Or Sh.Name Like "*Fournisseur*" Then
Sh.Visible = True
Else
Sh.Visible = False
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
A l'ouverture du classeur seules les feuilles fournisseurs et Synthèse Globale sont visibles.
A la sélection de la feuille d'un fournisseur, les feuilles de ce fournisseurs sont visibles ( en plus des précédentes)
A la sélection de la feuille d'un nouveau fournisseurs les feuilles de l'autre fournisseur sont masquées et celles du nouveau sont affichées.
A+