L'erreur se produit lorsque la procédure tente de masquer la dernière feuille visible, parce qu'un classseur doit toujours avoir au moins une feuille visible.
Correctif mini :
Pour l'ouverture : rendre la feuille prévue visible dès le départ.
Private Sub Workbook_Open()
Dim Ws As Worksheet
Worksheets("AAAA").Visible = True
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "AAAA" Then Ws.Visible = xlSheetVeryHidden
Next Ws
UserForm1.Show
End Sub
Pour la procédure liée mot de passe : rendre visible la dernière feuille au départ (elle sera masquée s'il y a lieu à son rang).
Sub AfficheFeuilles(Utilisateur As String)
Dim Col As Byte, i As Byte, Lig As Integer
Worksheets("JJJJ").Visible = True
With Sheets("parametrage")
Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
For i = 3 To Col
If UCase(.Cells(Lig, i)) = "X" Then
Sheets(.Cells(1, i).Value).Visible = True
Else
Sheets(.Cells(1, i).Value).Visible = xlSheetVeryHidden
End If
Next i
End With
Unload UserForm1
End Sub
Cordialement.