Adjunto macro que responde al ejemplo enviado. Observo que el contenido de celda D12 no se condice con lo que presenta la col H en los registros ya guardados... revisa esa línea.
Sub INGRESAR()
'x Elsamatilde
'
'hoja destino
Set hod = Sheets("GGEC-R-001 E200")
'hoja con el formulario (si el botón está en esa hoja no hace falta seleccionarla)
Sheets("Ingreso Nuevo Contrato").Select
sino = MsgBox("¿Confirmas guardar este registro?", vbQuestion + vbYesNo, "CONFIRMAR")
If sino <> vbYes Then MsgBox "Proceso cancelado.": Exit Sub
'se guarda la última fila ocupada en hoja destino
x = hod.Range("A" & Rows.Count).End(xlUp).Row + 1
'se busca el 1er registro de = gerencia
Set busco = hod.Range("D:D").Find([D8], LookIn:=xlValues, lookat:=xlWhole)
'si no encuentra el registro se agrega al final
If busco Is Nothing Then
'se agrega fila al final
hod.Range("A" & x).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Else
'a partir del registro encontrado se busca la última entrada
y = busco.Row + 1
While hod.Range("D" & y) = [D8]
y = y + 1
Wend
'aquí debe ser insertada la fila
hod.Range("A" & y).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
x = y 'para utilizar la misma variable en instrucciones de pase
End If
'se pasan los datos... observar que no es necesario seleccionar para pasar
hod.Range("A" & x) = [D5]
hod.Range("B" & x) = [D6]
hod.Range("C" & x) = [D7]
hod.Range("D" & x) = [D8]
hod.Range("E" & x) = [D9]
hod.Range("F" & x) = [D10]
hod.Range("G" & x) = [D11]
hod.Range("H" & x) = [D12]
'opcional: borrar el formulario para un nuevo pase o enviar un mensaje
'[D5:D12].ClearContents
[D5].Select
MsgBox "Datos guardados."
End Sub
Siempre es conveniente agregar un mensaje de confirmación antes de pasar datos que necesitan insertar filas.
PD) Te estoy devolviendo el libro para que observes cómo debes dejar la fila de totales.