Proteger et deproteger un classeur et ses feuilles en VBA

Bonsoir membres du forum,

Comment Protéger et déprotéger un classeur et ses feuilles en vba après clique sur un bouton de commande ?

Private Sub Workbook_Open()
  Dim sht As Worksheet
  Set sht = ThisWorkbook.Sheets("PARTAGE GLOBAL")
  Set sht = ThisWorkbook.ActiveSheet
  ''Set sht = ActiveSheet
'ICI VOUS PROTEGEZ VOTRE FEUILLE
 With sht
 '________________________________________________________________
 'Workbooks("PARTAGE_HERITAGE_Version_2_Plus").Protect "oumar"
 'ProtégerClasseur_ProtégerToutesLesFeuilles_MotDePasse
 '________________________________________________________________

  .Protect UserInterfaceOnly:=True, Password:="oumar"
  End With
  Set sht = Nothing
End Sub

Sub ProtégerClasseur_ProtégerToutesLesFeuilles_MotDePasse()
    Dim fc As Worksheet

    ActiveWorkbook.Unprotect "oumar"

    For Each fc In Worksheets
        fc.Protect "oumar"
    Next

    ActiveWorkbook.Protect "oumar"
End Sub

Message d'erreur:

userform 38 userform 39
Sub InsererNouvelleFeuilleExcel() ' Macro Insérer une nouvelle feuille Excel
    Sheets.Add After:=Sheets(Sheets.Count)
    Range("B1").Select

    DeleteFormControls

End Sub

Sub DeleteFormControls()
Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If shp.Type = msoFormControl Then shp.Delete
    Next shp
End Sub

Cordialement.

Bonsoir Morobaboumar,

On ne peut ajouter des feuilles si le classeur est protégé. Et c'est ce qui se passe à l'ouverture de celui ci.

Donc prévoir dans ta macro d'ajout la déprotection du classeur avant l'ajout de la feuille. Puis reprotège ensuite si besoin.

Bonsoir X Cellus,

Voici un exemple de code, pourrais tu m'expliquer comment pourrais je l'adapter à tel que tu m'as suggéré:

Sub Protection()
 MotPass = "bbil"
 ActiveWorkbook.Protect Password:=(MotPass), Structure:=True, Windows:=False
 ActiveSheet.Protect Password:=(MotPass), Contents:=True, _
    DrawingObjects:=True, Scenarios:=True
 End Sub
Sub Enleveprotection()
With ActiveWorkbook
    .Protect vbNullString, True, True
    .Unprotect vbNullString
End With
With ActiveSheet
    .Protect vbNullString, True, True, True, True
    .Unprotect vbNullString
End With
End Sub
ActiveSheet.Protect "bbil"

ActiveSheet.Unprotect "bbil"

Cordialement.

Bonjour morobaboumar, le fil, le forum,

Selon le code où il y a l'erreur ... ( la photo du 1er post de ce fil ) ...

Quelque chose comme cela ...

Le Call devant l'appel de la macro InsererNouvelleFeuilleExcel sert à assurer le retour après le traitement afin de continuer la suite de la macro ...

Private Sub CmdButtonNouvelleFeuille_Click()

    ActiveWorkbook.Unprotect "bbil"

    Worksheets.Add After:=ActiveSheet

    Call InsererNouvelleFeuilleExcel

    ActiveWorkbook.Protect "bbil"

End Sub

ric

Rechercher des sujets similaires à "proteger deproteger classeur feuilles vba"