Run-Time Error 1004 Method Unprotect of Object _Worksheet' Failed

Bonjour,

Je reçois un code erreur après l'encodage d'un User et de son Psswd au sein d'un Form.

Les utilisateurs sont au sein d'une Feuille "Rights" qui mentionne les droits de Visualiser, Modifier ou de cacher les autres feuilles du Workbook.

Le code se trouve dans mon exemple joint.

merci d'avance de votre aide.

Cordialement,

Eric

13book1-security.xlsm (28.04 Ko)

Bonjour,

Je pense que votre fichier est vérolé, en l'ouvrant ça ne m'affiche aucun onglet

Bonjour toutes et tous

coucou BrunoM45

j'ai réussi un peu a voir l'intérieur, le mot de passe de la feuille protégée est 1234

edit: les autres feuilles sont masquées et lorsqu'n veut les déprotégées un message de Worksheets a échoué

le code de l'usf:

Private Sub CommandButton1_Click()

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Rights")

If Me.Txt_UserName.Value = "" Then
    MsgBox "Please enter your user name", vbCritical
    Exit Sub
End If

If Me.Txt_Psswd = "" Then
    MsgBox "Please enter your password", vbCritical
    Exit Sub
End If

If Application.WorksheetFunction.CountIf(sh.Range("A:A"), Me.Txt_UserName.Value) = 0 Then
    MsgBox "Invalid user name", vbCritical
    Exit Sub
End If

Dim user_row As Integer
user_row = Application.WorksheetFunction.Match(Me.Txt_UserName.Value, sh.Range("A:A"), 0)

If Me.Txt_Psswd.Value <> sh.Range("C" & user_row).Value Then
    MsgBox "Invalid password", vbCritical
    Exit Sub
End If

Dim lock_worksheet, Unlock_worksheet As Integer

lock_worksheet = Application.WorksheetFunction.CountIf(sh.Range("E" & user_row, "XFD" & user_row), "Ï")
Unlock_worksheet = Application.WorksheetFunction.CountIf(sh.Range("E" & user_row, "XFD" & user_row), "Ð")

If (lock_worksheet + Unlock_worksheet) = 0 Then
 MsgBox "You don't have access to this Report, please contact the administrator", vbCritical
    Exit Sub
End If

' Apply Setting
Dim wsh As Worksheet
Dim i As Integer

If sh.Range("B" & user_row).Value = "Admin" Then 'for Admin Role
    sh.Unprotect 1234
    sh.Cells.EntireColumn.Hidden = False
    sh.Cells.EntireRow.Hidden = False

    ThisWorkbook.Unprotect 1234
    For Each wsh In ThisWorkbook.Worksheets
        wsh.Visible = xlSheetVisible
        wsh.Unprotect 1234
    Next wsh

    ActiveWindow.DisplayWorkbookTabs = True

Else  'for Users

ThisWorkbook.Unprotect 1234
ActiveWindow.DisplayWorkbookTabs = True

    For i = 5 To Application.WorksheetFunction.CountA(sh.Range("2:2"))
        Set wsh = ThisWorkbook.Sheets(sh.Cells(2, i).Value)

        If sh.Cells(user_row, i).Value = "Ð" Then 'for unlock
            wsh.Visible = xlSheetVisible
            wsh.Unprotect 1234
        ElseIf sh.Cells(user_row, i).Value = "Ï" Then 'for unloack
            wsh.Visible = xlSheetVisible
            wsh.Protect 1234
        End If

    Next i

ThisWorkbook.Unprotect 1234
sh.Visible = xlSheetVeryHidden

End If

Unload Me

End Sub

Private Sub Text_UserName_Change()

End Sub

Private Sub UserForm_Activate()
Dim sh As Worksheet
Dim wsh As Worksheet

Set sh = ThisWorkbook.Sheets("Rights")
ThisWorkbook.Unprotect 1234

sh.Visible = xlSheetVisible

For Each wsh In ThisWorkbook.Worksheets
    If wsh.Name <> "Rights" Then
        wsh.Visible = xlSheetVeryHidden
    End If

Next wsh

sh.Unprotect 1234
sh.Cells.EntireColumn.Hidden = True
sh.Cells.EntireRow.Hidden = True
sh.Protect 1234

ThisWorkbook.Protect 1234

ActiveWindow.DisplayWorkbookTabs = False

End Sub

Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)

End Sub

Private Sub UserForm_Click()

End Sub

une capture d'écran de ce que j'ai :

ztestt001

Hello,

Pas d'idéé?

Votre aide serait très appréciable.

Je suis débutant VBA, j'ai suivit un tutoriel en ligne, ce qui m'a permis de générer ce code qui fonctionne au sein du cours mais pas chez moi!

Version différentes d'Excel, évolution de VBA????

Je suis sous Excel 2016.

Grand merci de vos réponses.

très bonne journée.

Eric

Hello,

Merci mais j'ai trouvé mon problème.

Si quelqu'un est desireux de savoir je partage mon expérience avec plaisir.

Thanks to the Forum.

Eric

Rechercher des sujets similaires à "run time error 1004 method unprotect object worksheet failed"