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

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

  • Classeur10.xlsm
    23.9 KB · Affichages: 14

ChTi160

XLDnaute Barbatruc
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
 

luke3300

XLDnaute Impliqué
Bonsoir Marcel32,

Voici ce que j'obtiens avec ta solution ...

2020-04-14_20-47-57.png

2020-04-14_20-49-38.png
 

ChTi160

XLDnaute Barbatruc
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:

_Thierry

XLDnaute Barbatruc
Repose en paix
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
 

luke3300

XLDnaute Impliqué
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
 

Discussions similaires

Réponses
2
Affichages
812

Statistiques des forums

Discussions
312 106
Messages
2 085 351
Membres
102 871
dernier inscrit
Maïmanko