tu dois enlever la protection à chaque fois que tu veux écrire dans une feuille protégée. Je présume que c'est les feuilles objet que tu veux protéger? Tu devrais ajouter cette ligne lors de la création:
Sub CréerUneObjet()
'J'ai coupé le début pour l'affichage
Selection.Copy
Sheets(NomDuVh).Select
Cells.Select
ActiveSheet.Paste
Range("B4").Select
ActiveWindow.FreezePanes = True
Range("A1") = "RESERVATION " & NomDuVh
'Cette ligne protegera la nouvelle feuille ===========================
ActiveSheet.Protect "motdepasse"
' ============================================================
Sheets("Menu").Activate
NomDuBouton = .Cells(CompteurDeLigne - 1, compteurDeColonne)
.Cells(CompteurDeLigne, compteurDeColonne) = NomDuVh
.Cells(CompteurDeLigne + 1, compteurDeColonne) = GammeDuVh
Sheets("menu").DrawingObjects(NomDuBouton).Visible = True
ActiveSheet.DrawingObjects(NomDuBouton).Select
Selection.Characters.Text = NomDuVh
Sheets("Cadre").Visible = False
Application.GoTo Reference:=Worksheets(NomDuVh).Range("A4"), Scroll:=True
Application.GoTo Reference:=Worksheets("Menu").Range("A1"), Scroll:=True
Sheets("Menu").Protect
Exit Sub
End If
Next
Next
End With
MsgBox " Le nombre d'objet maxi (15) est atteint , création impossible "
Application.GoTo Reference:=Worksheets("Menu").Range("A1"), Scroll:=True
GestionDesErreurs:
If Err = 1004 Then
Err = 0
MsgBox " Cet objet est déja inscrit dans la base , création impossible"
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Sheets("Menu").Cells(CompteurDeLigne, compteurDeColonne) = ""
Application.GoTo Reference:=Worksheets("Menu").Range("A1"), Scroll:=True
Sheets("Menu").Protect
Exit Sub
End If
End Sub
ensuite un exemple pour le userform suppression des réservations:
Private Sub MiseEnFormeReservation(Feuille As String, Plage As String)
Sheets(Feuille).Unprotect "motdepasse"
With Sheets(Feuille).Range(Plage)
.UnMerge
.Value = ""
.Interior.ColorIndex = xlNone
.HorizontalAlignment = xlLeft
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
End With
Sheets(Feuille).Protect "motdepasse"
End Sub