Macro copiar y pegar si cumple una condición

Tengo un sistema en donde realizo mis ventas diarias. El sistema esta compuesto de esta manera.

Desde A2 hasta G2 están las operaciones las cuales son:

"codigo", "cantidad", "descripción", "neto", "pendientes", "importe" y "ganancia"

y en F4 y G4 están

"Abono" y "Pago".

Cuando realizo una venta y le doy Aceptar

Se copian y se pegan estos datos a partir de la fila 11, en el mismo orden de arriba excepto "Abono" y "Pago" que se pegan en las columnas siguientes osea en h11 y i11

Mi sistema funciona de esta manera:

Cuando realizo una venta primero coloco el código del producto, automáticamente se me coloca la descripción y el neto y después coloco la cantidad y automáticamente se pone el importe y la ganancia,

Cuando coloco un valor en "Abono" significa que la persona me pago solo una parte del producto y automáticamente esa parte se Resta del "Importe" después le doy aceptar y se pega el importe en F11 y el abono en H11

Lo que yo quiero es que cuando haya un valor en "Abono" se peguen invertidos osea el "Importe" en H11 y el "Abono" en H11 pero solo cuando haya escrito un valor en "Abono" si no hay nada en "Abono" que se pegue de la misma manera.

Esta es mi macro a ver en que me pueden ayudar.

Sub ACEPTAR_VENTAS_1()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Range("A2:G2").Select   'aqui comienzan las operaciones'
Selection.Copy
Range("A150").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("G2").Select
Application.CutCopyMode = False
Selection.Copy
Range("G150").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("j2").Select
Application.CutCopyMode = False
Selection.Copy
Range("j150").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("f4").Select   'aqui esta el abono'
Application.CutCopyMode = False
Selection.Copy
Range("h150").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("g4").Select 
Application.CutCopyMode = False
Selection.Copy
Range("i150").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("Tabla44[#All]").Select
ActiveWorkbook.Worksheets("VENTAS").ListObjects("Tabla44").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("VENTAS").ListObjects("Tabla44").Sort.SortFields. _
Add Key:=Range("Tabla44[ORDEN]"), SortOn:=xlSortOnValues, Order:= _
xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("VENTAS").ListObjects("Tabla44").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
. Apply

Respuesta
2

Te anexo la macro actualizada. Según tu explicación, pegas en la fila 11, pero en la macro pegas en la fila 150, de cualquier manera, si es la fila 11, entonces cambia 150 por 11:

Sub ACEPTAR_VENTAS_1()
    '
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
    '
    Range("A2:G2").Copy
    Range("A150").PasteSpecial Paste:=xlPasteValues
    '
    Range("J150") = Range("J2")
    '
    If Range("F4") = "" Then            'si el abono es vacío
        Range("F150") = Range("F2")
        Range("H150") = Range("F4")
    Else                                '
        Range("F150") = Range("F4")
        Range("H150") = Range("F2")
    End If
    Range("I150") = Range("G4")
    '
    Application.CutCopyMode = False
    Range("Tabla44[#All]").Select
    ActiveWorkbook.Worksheets("VENTAS").ListObjects("Tabla44").Sort.SortFields. _
    Clear
    ActiveWorkbook.Worksheets("VENTAS").ListObjects("Tabla44").Sort.SortFields. _
    Add Key:=Range("Tabla44[ORDEN]"), SortOn:=xlSortOnValues, Order:= _
    xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("VENTAS").ListObjects("Tabla44").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas