Entonces la macro original no te sirve porque te copia toda la hoja1 nuevamente. Y lo que necesitás es actualizar cada fila cuando tenga algún cambio, ya sea que se registre o que se modifique.
Entonces las siguientes 2 macros colocalas en un módulo del Editor.
Para ejecutarlas podrías tener un botón o utilizar algún Evento de Hoja como podría ser un Doble clic sobre alguna celda de la fila modificada.
Te invito a mirar el video 45 de mi canal donde dejo explicado este evento.
Sub ACTUALIZAR()
'x Elsamatilde
'se ejecuta una vez hecho un ingreso o modificación a la hoja 1
'se pasan datos de la fila activa
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
'fila disponible en Hoja2 según col Cliente
u = h2.Range("H" & Rows.Count).End(xlUp).Row + 1
'celdas a copiar de la fila activa
i = ActiveCell.Row
h1.Range("A" & i & ",C" & i & ",D" & i & ",E" & i & _
",F" & i & ",G" & i & ",H" & i & ",K" & i & _
",X" & i & ",Y" & i & ",Z" & i & ",AH" & i & _
",AI" & i & ",AJ" & i & ",BK" & i & ",BL" & i & _
",BM" & i & ",BN" & i).Copy h2.Range("B" & u)
'colocar la fecha/hora en col P '*evaluar si ya está en col G
h2.Range("P" & u) = Now
h2.Range("P" & u).NumberFormat = "dd-mm-yy hh:mm"
'ordenar la hoja2 x Nombre-Cto- col P
Call OrdenaHoja2
'opcional: regresar a Hoja1
h1.Select
End Sub
Sub OrdenaHoja2()
'x Elsamatilde
Sheets("Hoja2").Select
'el fin de rango lo da la col de Cliente (H)
X = Range("H" & Rows.Count).End(xlUp).Row
If X = 3 Then Exit Sub
ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Add2 Key:=Range("H4:H" & X), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Add2 Key:=Range("B4:B" & X), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Add2 Key:=Range("P4:P" & X), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hoja2").Sort
.SetRange Range("A3:P" & X)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A3").Select
End Sub
Lo que hace la macro es pasar las celdas necesarias de la fila activa (ajustar referencias), coloca la fecha/hora en col P y ordena la Hoja2 (ajustar rango) por col: Cliente, Cto, Fecha.
Si la vas a colocar en algún evento de hoja (BeforeDobleClic, BeforeRightClic o SelectionChange te sirven para esto), la llamada quedaría así:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'solo se ejecuta si se llama desde col D y fila 17 en adelante
If Target.Column <> 4 Or Target.Row < 17 Then Exit Sub
If Target.Value = "Abierto" Then Call ACTUALIZAR 'ajustar texto
Target.Offset(0, 1).Select
End Sub