Tanto per smuovere le acque ...
Per fare quello che chiedi credo sia necessario, oltre a proteggere il foglio, "bloccare" alcune celle e lasciarne altre "non bloccate" ed in particolare il range D6:D19. Questo lo puoi fare tramite il "formato celle" modificando l'impostazione nella scheda Protezione; poi quando proteggi il foglio metti la spunta su "Seleziona celle sbloccate" che ti permettere di muoverti solo sulle celle che hai inteso lasciare modificabili.
A questo punto la macro WorkSheet_Change potresti cambiarla così:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Area1 As String 'dichiara le variabili
Dim RR As Long
Area1 = "D6:D19"
RR = Target.Row
If Application.Intersect(Target, Range(Area1)) Is Nothing Then Exit Sub
ActiveSheet.Unprotect
Range("B" & RR).Value = Date
Range("B" & RR).Locked = True 'blocca la cella una volta compilata
Range("D" & RR & ":U" & RR).Locked = True 'blocca le celle
ActiveSheet.Protect
End Sub
mentre la macro associata al pulsante per la pulizia della riga (da ripetere/adeguare più volte visto che hai più pulsanti) puoi modificarla così:
Sub Macro1()
Application.EnableEvents = False 'serve per evitare di attivare inutilmente l'evento WorkSheet_Change
ActiveSheet.Unprotect
Range("B6").Locked = False 'rendi nuovamente sbloccata la cella
Range("B6").ClearContents
Range("D6:U6").Locked = False 'sbloccate le celle
Range("D6:U6").ClearContents
ActiveSheet.Protect
Application.EnableEvents = True
End Sub
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)