XL 2016 Protéger classeur

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 !

Lazz

XLDnaute Junior
Bonjour tout le monde ! j'ai un petit problème si vous pouvez m'aider à le résoudre !

J'ai créer une macro pour protéger et déprotéger mon classeur pour éviter que je déprotège tout mes feuilles une par une.
Cependant, j'ai remarquer que verrouiller un classeur entier n'étais pas compatible avec certaines de mes autres macros.

Du coup, Au lieu de verrouiller tout mon classeur avec un mot de passe, j'aimerai ne protéger que certaines feuilles qui m'intéressent.

Je vous mets mon code en dessous et un fichier exemple :
Sub Pro()

Dim i As Integer
Dim Wb As Workbook
Dim sh As Variant

Set Wb = ActiveWorkbook
sh = Wb.Sheets("Parametres").Range("A1:A3").Value

Application.ScreenUpdating = False

Wb.Protect ("123")
For i = 1 To UBound(sh)
If sh(i, 1) = "" Or sh(i, 1) = 0 Then GoTo S
Sheets(CStr(sh(i, 1))).Protect ("123"), AllowFiltering:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
S:
Next i

Application.ScreenUpdating = True

End Sub
J'aimerai protéger que les feuille 1 à 3 mais pas les feuille 4 et 5.
(Il ne faut pas que cela me protège le classeur)

Merci à tous !
 

Pièces jointes

Dernière édition:
Bonjour Lazz
D'après ce que j'ai compris
Il te suffit de Supprimer :
VB:
Wb.Protect ("123")
Qui correspond a la Protection du Classeur "Wb"
Dans ta procédure :
Code:
Sub Pro()
Dim i As Integer
Dim Wb As Workbook
Dim sh As Variant

Set Wb = ActiveWorkbook
sh = Wb.Sheets("Parametres").Range("A1:A3").Value

Application.ScreenUpdating = False

'''''''''''''''Wb.Protect ("123")
For i = 1 To UBound(sh) 'Pour chaque lignes du tableau des feuilles'
If sh(i, 1) = "" Or sh(i, 1) = 0 Then GoTo S 'si Vide on se rend à "S"
Sheets(CStr(sh(i, 1))).Protect ("123"), AllowFiltering:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
S:
Next i 'autre'
Application.ScreenUpdating = True
End Sub
Pour quoi mettre "Activesheet" ?
Bonne Journée
Jean marie
 
- 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
3
Affichages
534
Réponses
6
Affichages
602
Réponses
4
Affichages
543
Retour