Masquer onglet en fonction du nom

Bonjour à toutes et à tous,

Je souhaite obtenir la macro suivante, utilisable dans n'importe quel classeur Excel actif :

1) Masquer toutes les feuilles du classeur qui ont un nom commençant par un même caractère. (par exemple : ¤, #... de préférence, voire, à défaut, par un chiffre). Ensuite il faudrait que le classeur soit verrouillé par un mot de passe (1234) afin que les autres utilisateurs ne puissent pas afficher les onglets masqués)

2) En activant une nouvelle fois la macro, il faudrait qu'elle fasse le chemin inverse : déverrouiller le classeur et afficher ces mêmes feuilles (certains onglets masqués manuellement (ne répondant pas à la règle du caractère spécifique) doivent rester masqués).

J'ai testé avec ChatGPT, mais le code donné ne fonctionne pas. Je le mets ci-dessous pour information :

Sub V_D_BS()
    Dim ws As Worksheet
    Dim isLocked As Boolean
    Dim password As String
    password = "1234"

    ' Vérifier si le classeur est protégé
    isLocked = ThisWorkbook.ProtectStructure

    If Not isLocked Then
        ' Masquer les onglets commençant par ¤
        For Each ws In ThisWorkbook.Worksheets
            If Left(ws.Name, 1) = "¤" Then
                ws.Visible = xlSheetHidden
            End If
        Next ws
        ' Protéger la structure du classeur
        ThisWorkbook.Protect Password:=password, Structure:=True
        MsgBox "Les onglets commençant par ¤ sont masqués et le classeur est verrouillé.", vbInformation
    Else
        ' Déverrouiller le classeur
        ThisWorkbook.Unprotect Password:=password
        ' Rendre visibles tous les onglets masqués
        For Each ws In ThisWorkbook.Worksheets
            If Left(ws.Name, 1) = "¤" Then
                ws.Visible = xlSheetVisible
            End If
        Next ws
        MsgBox "Le classeur est déverrouillé et tous les onglets masqués sont affichés.", vbInformation
    End If
End Sub

J'espère que ma demande est assez compréhensible et je vous remercie par avance pour votre aide.

Bonne journée

Bonjour Jue

J'ai introduit le code dan un classeur vierge avec 3 onglets dont 1 commençant par ¤ et j'ai masqué le feuille 3 et... tout fonctionne parfaitement.

Je vais même garder ce code car il pourrait me servir.

Je te joins mon essai pour que tu testes chez toi. J'ai créé un bouton dans l'onglet 1 pour lancer la macro

Dis moi si tu as des problèmes

Chris

Bonjour Chris,

Je te remercie pour ton aide.

Effectivement, la macro fonctionne sur ton fichier. Grâce à ça, j'ai trouvé le problème sur le mien :

Comme je souhaitais une macro qui fonctionne sur tous les fichiers Excel (même les format .xlsx), j'ai mis le code dans un dossier VBA personnel qui n'est pas relié à un fichier Excel.

Par conséquent, j'ai modifié le "Thisworkbook" par "Activeworkbook" et le tour est joué

Merci

Jue

Rechercher des sujets similaires à "masquer onglet fonction nom"