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

Microsoft 365 Proteger un classeur avec macro

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 !

pelerin65

XLDnaute Occasionnel
Bonjour le forum

je voudrais protéger un classeur afin d'éviter que des formules ou code VBA soit modifiées ou effacées.
j'ai essayé de protéger avec protéger les feuilles avec un code mais lorsque la protection des feuilles sont mises, les macros et liens ne fonctionnent plus.

Y aurait-il une solution afin de protéger mon travail
Merci d'avance

si besoin je peux joindre le fichier
 
Réponse au message #14.

Quand vous faites un accès en écriture ( write, delete ... ) vous devez absolument déprotéger la ou les feuilles en conséquence avec :
Code:
ActiveSheet.Unprotect ("1234")
ou
Sheets("Nom de la feuille").Unprotect ("Mot de passe")
et avant de sortir de la macro, vous devez reprotéger avec :
Code:
ActiveSheet.Protect ("1234")
ou
Sheets("Nom de la feuille").Protect ("Mot de passe")

J'ai oublié de préciser : Quand vous voulez gardez des cellules accessibles, il y a la déprotection, mais pensez lors de l'initialisation du mot de passe de bien laisser cocher ces deux lignes :

Sinon les cellules resteront protégées puisque vous n'avez pas autoriser leur sélection.
 
Effectivement j'arrive à ouvrir la PJ du post #14, mais c'est la seule.
Modifié : https://www.cjoint.com/c/KKDjPEsLOZY
Les cellules A4 à D4 sont déprotégées.
J'ai modifié le code pour les deux boutons "Affiche la journée" et "Efface la journée" :
VB:
Private Sub CommandButton4_Click()
    ActiveSheet.Unprotect ("1234")                                  ' On déprotège la feuille
' EFFACER Macro
    Application.ScreenUpdating = False
    Rows("6:6").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Rows("6:6").Select
    Selection.ClearContents
    Range("C3:D3").Select
    Range("A3").Select
    Application.ScreenUpdating = True
    ActiveSheet.Protect ("1234")                                    ' On reprotège la feuille
End Sub
Private Sub CommandButton5_Click()
    ActiveSheet.Unprotect ("1234")                                  ' On déprotège la feuille
' Macro1 Macro
    Sheets("source").Range("Tsource[#All]").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A2:E3"), CopyToRange:=Range("A6"), Unique:=False
    ActiveSheet.Protect ("1234")                                    ' On reprotège la feuille
End Sub
Il suffit de rajouter les deux lignes Unprotect et Protect.
 
- 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
17
Affichages
478
Réponses
2
Affichages
167
Réponses
5
Affichages
145
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
577
Themax
T
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…