Some code streamlining suggestion, Module54:
Dim ws As Worksheet
For Each ws In Sheets(Array("Prod A1", "Prod A2", "Prod B", "Prod C1", "Prod C2", "Prod D"))
ws.Columns("Y:Y").Delete Shift:=xlToLeft
ws.Range("H1:S2").Value = ws.Range("H1:S2").Value
ws.Range("E4").Value = ws.Range("E4").Value
With ws.Rows("5:100")
.Orientation = 0
.AddIndent = False
.ReadingOrder = xlContext
.MergeCells = False
.FormatConditions.Delete
.Value = .Value
End With
Next ws
Module8
Sub DelNAErrorsOnEmbSheet()
On Error Resume Next
Sheets("Emb").Cells.SpecialCells(xlCellTypeFormulas, 16).ClearContents
End Sub
Module7
Sub Unprotect()
Dim ws As Worksheet
For Each ws In Sheets(Array("Emb", "Prod A1", "Prod A2", "Prod B", "Prod C1", "Prod C2", "Prod D"))
ws.Unprotect
Next ws
End Sub
Sub Protect()
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In Sheets(Array("Emb", "Prod A1", "Prod A2", "Prod B", "Prod C1", "Prod C2", "Prod D"))
ws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFormattingCells:=True, AllowInsertingRows:=True, _
AllowDeletingRows:=True
Next ws
End Sub