Sub UpdateLogWorksheet()
    Dim historyWks As Worksheet
    Dim inputWks As Worksheet

    Dim nextRow As Long
    Dim oCol As Long

    Dim myRng As Range
    Dim myCopy As String
    Dim myCell As Range
    
    Dim myCopy2 As String
    Dim myRng2 As Range
    Dim off As Long
    
    myCopy = "D5,D7,D9,D11,D13,D15,D17,D19,D21,D23,D25,D27,D29,D31,D33,D35,D37,D39,D41,D43,D45,D47,D49,D51,D53,D55,D57,D59"
    myCopy2 = "D23,D25,D27,D29,D31,D33"
    
    Set inputWks = Worksheets("Input")
    Set historyWks = Worksheets("Total")

    With historyWks
        nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
    End With

    With inputWks
        Set myRng = .Range(myCopy)
        Set myRng2 = .Range(myCopy2)

        If Application.CountA(myRng) <> myRng.Cells.Count Then
            MsgBox "Please fill in all the cells!"
            Exit Sub
        End If
    End With

    With historyWks
        With .Cells(nextRow, "A")
            .Value = Now
            .NumberFormat = "dd/mm/yyyy hh:mm:ss"
        End With
        .Cells(nextRow, "B").Value = Application.UserName
        oCol = 3
        For Each myCell In myRng.Cells
            .Cells(nextRow, oCol).Value = myCell.Value
            oCol = oCol + 1
        Next myCell

        Do
            off = off + 2
            Set myRng2 = myRng2.Offset(, off)
            If WorksheetFunction.CountA(myRng2) < 1 Then Exit Do
            
            nextRow = nextRow + 1
            With .Cells(nextRow, 1).Resize(, 11)
                .Value = .Offset(-1).Value
            End With
            oCol = 12
            For Each myCell In myRng2.Cells
                .Cells(nextRow, oCol).Value = myCell.Value
                oCol = oCol + 1
            Next myCell
            myRng2.clearcontents
        Loop       
    End With
    
    myRng.clearcontents
    Application.GoTo inputWks.Cells(1)

End Sub