Microsoft 365 Protéger les feuilles du classeur sauf une (VBA)

  • Initiateur de la discussion Initiateur de la discussion luke3300
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

luke3300

XLDnaute Impliqué
Bonsoir le forum,

J'utilise ce code à l'ouverture de mon classeur.

VB:
Private Sub Workbook_Open()
For Each ws In Sheets
   With ws
       .Unprotect Password:="soleil"
       .Protect Password:="soleil", UserInterfaceOnly:=True
       .EnableOutlining = True
    End With
Next ws
Sheets("Feuil1").Activate
End Sub

J'aimerais cependant qu'une feuille nommée "Data" ne soit pas protégée par ce code et puisse rester accessible.
Pourriez-vous m'indiquer ce que je dois modifier pour obtenir le résultat recherché?

Merci d'avance et belle soirée.
Prenez soin de vous 😉
 

Pièces jointes

Bonjour luke3300
peut être ainsi!
non testé
VB:
Private Sub Workbook_Open()
For Each ws In Sheets
   With ws
       If .Name <> "Data" then
       .Unprotect Password:="soleil"
       .Protect Password:="soleil", UserInterfaceOnly:=True
       .EnableOutlining = True
    End If
End with
Next ws
Sheets("Feuil1").Activate
End Sub
jean amrie
 
Re
tu as inversé des lignes
et il manque le "End If"
VB:
Private Sub Workbook_Open()
For Each ws In Sheets
   With ws
       If .Name <> "Data" then 'Si nom de la feuille <> "Data"
       .Unprotect Password:="soleil"'On déprotège toutes les feuilles
       .Protect Password:="soleil", UserInterfaceOnly:=True 'On protège
       .EnableOutlining = True
    End If
End with
Next ws
Sheets("Feuil1").Activate
End Sub
ou
Code:
Private Sub Workbook_Open()
For Each ws In Sheets
   With ws    
       .Unprotect Password:="soleil" 'On déprotège toutes les feuilles
If .Name <> "Data" then  'Si nom de la feuille <> "Data"
       .Protect Password:="soleil", UserInterfaceOnly:=True  'On protège
       .EnableOutlining = True
    End If
End with
Next ws
Sheets("Feuil1").Activate
End Sub
Testé les deux fonctionnent !
Regarde bien erreur de recopie

Jean marie
 
Dernière édition:
Bonsoir

Je pense que comme ceci ce devrait passer
VB:
Option Explicit

Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Sheets
    With ws
            .Unprotect Password:="soleil"
        
                If .Name <> "Data" Then
                    .Protect Password:="soleil", UserInterfaceOnly:=True
                    .EnableOutlining = True
                End If
    End With
Next ws
Sheets("Data").Activate
End Sub

Bonne soirée
@+Thierry
 
Bonsoir

Je pense que comme ceci ce devrait passer
VB:
Option Explicit

Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Sheets
    With ws
            .Unprotect Password:="soleil"
       
                If .Name <> "Data" Then
                    .Protect Password:="soleil", UserInterfaceOnly:=True
                    .EnableOutlining = True
                End If
    End With
Next ws
Sheets("Data").Activate
End Sub

Bonne soirée
@+Thierry

Bonjour le forum, _Thierry, ChTi160,

Et si je voulais qu'une 2ème feuille ne soit pas protégée non plus, que devrais-je modifier/ajouter dans ce code?

Merci.

Excellent dimanche
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
1 K
Réponses
7
Affichages
902
Réponses
2
Affichages
992
Retour