Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

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é
En effet, j'avais oublié le "End If"
Ceci étant, j'ai dû inversé comme tu avais indiqué les 2 phrases ci plus haut.
Mais le résultat est là, merci à vous 2 et excellente soirée.
 

ChTi160

XLDnaute Barbatruc
Arff
le maître est là lol
t’inquiète @+thierry je n'ai rien oublié de tes leçons !
je n'ai fais que recopier le texte de la procédure
je ne manque jamais de le mettre ce "Option Explicit"
pourvu que le Confinement dur ! Lol
Jean marie
 

luke3300

XLDnaute Impliqué

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
831
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…