Option Explicit
Sub MasquerTout()
Dim sh As Object
For Each sh In Sheets
If LCase(sh.Name) <> "accueil" Then sh.Visible = xlSheetHidden
Next sh
End Sub
Notes que si l’utilisateur modifie le nom de la feuille accueil, cette macro plantera…
Il est préférable d’utiliser le CodeName pour identifier la feuille Accueil.
Par exemple :
Option Explicit
Sub MasquerTout()
Dim sh As Object
For Each sh In Sheets
If LCase(sh.Name) <> shAccueil.Name Then sh.Visible = xlSheetHidden
Next sh
End Sub
Il n’y a qu’un seule raison pour que ce code ne fonctionne pas : tu n’as pas renommé le CodeName de la feuille Accueil comme je t’avais dit de le faire !
Bien évidemment, le nouveau codeName doit être shAccueil
Ceci dit, je commence tous mes modules par Option Explicit et je n’utilise jamais de variable publique, ça évite ce genre de problème