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 SubJ'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