Crear tabla Auto-actualizable desde formulario o desde otra hoja con datos

Saludos a todos, soy novato en esto de las macros, pero quisiera saber cual es la mejor forma para crear una tabla, modificable con cada nuevo dato que se ingrese del cliente:

Explico

Quiero crear en excel, tablas como la de la macro, pero la idea es que los datos puedan ser actualizados ya sea desde el formulario o desda una hoja específica (el ejemplo).

La hoja de origen "Contabilidad General", se actualiza desde un formulario, de este quiero separa los deudores en tablas como las que se genera en la macro copiada.

Pero mi problema es que no se como crear ya sea un loop, que con cada NUEVO cliente se forme una tabla con las mismas caracteísticas, pero con el Nombre del cliente en la seccion "combinada y centrada" superior ("merged"), debajo de esta fila (en el rango demarcado por las líneas), se debe crear los nombres de los datos correspondientes y mas abajo los datos y cálculos del caso.

Nota, Si un cliente es nuevo, la tabla se debe generar completa, si ya esta en la base de datos, pues es solo crear una fila nueva e insertar los datos de la nueva "deuda" en las fila siguiente.

He pensado en dos métodos:

1. Un loop que abarque todo el proceso, o

2. Crear 3 macros una para "encabezado", otra para "datos" y la última que me copie la información e inmediatamente genere los cálculos buscados.

Espero se comprenda mi intención

Sub copiar_Deudores()
Dim NamesFull As String
Dim Origen As Worksheet, Final As Worksheet
Set Origen = ThisWorkbook.Worksheets("Contabilidad General")
Set Final = ThisWorkbook.Worksheets("Muestra Deudor")
NamesFull = ThisWorkbook.Sheets("Contabilidad General").Range("F8").Value & " " & ThisWorkbook.Sheets("Contabilidad General").Range("G8").Value
If Origen.Range("F8") <> Empty And _
Origen.Range("G8") <> Empty Then
Application.ScreenUpdating = False
Range("B2:H2").Select
Selection.Merge
 With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .ReadingOrder = xlContext
    End With
With Selection.Font
        .Name = "Algerian"
        .Size = 14
    End With
    With Selection.Font
        .Color = -65536
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
    End With
    Final.Range("B2").Value = NamesFull
    Range("B2:H6").Select
      With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    Range("B3:H3").Select
    Selection.Columns.AutoFit
     With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
       With Selection.Font
        .Name = "Algerian"
        .Size = 10
        .Color = -65536
    End With
    Range("B3") = "Préstamo Nº"
    Range("C3") = "Fecha Préstamo"
    Range("D3") = "Cantidad Prestada"
    Range("E3") = "Fecha Pago"
    Range("F3") = "% mensual"
    Range("G3") = "Total Intereses"
    Range("H3") = "Total a pagar"
    Range("B4").NumberFormat = "0.00"
    Range("C4").NumberFormat = "dd/MM/yyyy"
    Range("D4").NumberFormat = "$#,##0.00"
    Range("E4").NumberFormat = "dd/MM/yyyy"
    Range("F4").NumberFormat = "0.00"
    Range("G4").FormulaR1C1 = "=((RC[-2]-RC[-4])/30)*RC[-1]*RC[-3]"
    Range("H4").FormulaR1C1 = "=RC[-4]+RC[-1]"
    Range("B6:G6").Select
    Selection.Merge
    Selection.Columns.AutoFit
    Range("H6").FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
Application.ScreenUpdating = True
Application.CutCopyMode = False
End If
End Sub

Añade tu respuesta

Haz clic para o