You haven't said how your requisition data is arranged on the Requisition sheet, so I have assumed that it is in row 2, allowing for headings in row 1.
I have assumed that the requisition consists of 5 cells A2 to E2.
You can change the range easily by adjusting the code. However if your source requisition information is not in a single block of cells, the code will require more 'structural' changes.
On the destination 'Records' sheet I have put a sequential record number in column A - the code increments this automatically for each new record.
The requisition data then goes into the next empty row in columns B to F.
The columns are re-sized to accommodate the new record.
The source data on the requisition page is erased.
If you use sequential order numbers you could get this macro to pre-fill the requisition with the next order number.
You could add a test for missing data in the requisition and pop up a message box, and not copy the data - Just enclose the core of the code in an If statement, testing each of the requistion cells.
You could also add data checks - for instance to check that a an ordered item was in your inventory, and you could add to the record by looking up items in the order, possibly adding a phone number based on the name - using a table of known customers.
I suggest that you add a command button on the requisition sheet to run the macro.
Worksheet command button:
On the sheet with the source data create a command button from the Control Toolbox toolbar.
(If this toolbar isn't visible, right click on an existing toolbar and check the Control Toolbox from the list that appears).
Select the button Icon and draw a button.
Right-click the button and select Command Button - Edit and change the name to something useful!
Right-click the button again and select View Code.
In the visual basic code window that opens enter the code.
Note that Private Sub CommandButton1_Click() and End Sub will already be there, so don't duplicate them.
Option Explicit goes before the line Private Sub CommandButton1_Click().
Private Sub CommandButton1_Click()
Dim rngDestRow As Range
On Error GoTo ErrHnd
'get row below last used row on Records sheet
'records start in column B (col A is sequential record number)
Set rngDestRow = .Worksheets("Records").Range("B65534").End(xlUp).Offset(1, 0)
'create a record number in column A - increment number in row above, column A
rngDestRow.Offset(0, -1).Value = rngDestRow.Offset(-1, -1).Value + 1
'copy source on Requisition page - assume source in cells A2 to E2
'resize columns (resize range to include row 1 headings down to this entry
rngDestRow.Offset(-rngDestRow.Row + 1, 0).Resize(rngDestRow.Row, 5).Columns.AutoFit
'clear source cells
After entering the code click 'Save' from the Visual Basic Menu.
Use Alt+f11 (the Alt key and function key #11 together), to swap back to the main Excel window.
Exit Design mode - click the first icon on the Control Toolbox toolbar.
Click the Command button to run the code.
As this code finds the next row to use on the Records worksheet by using the End(xlUp) action, there must not be any data below the last record, at least in column B that this code uses for the search.
You mention columns as well as requisition data in a row of cells. Include this line of code to copy a second range of cells in the requisition worksheet and copy them to the same row on the records worksheet, but 5 columns further over - hence the Offset. You will also need to add a second Clear statement to empty these cells, as well as expanding the number of columns in the Autofit line.
Regarding data integrity you could add data validation to the requisition cells, such as only allowing today's date, or only allowing numbers for an order quantity.
Hope this gives you something to work from.