[RESUELTO]Insertar fila si cumple una condicion

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

[RESUELTO]Insertar fila si cumple una condicion

Mensaje por jhonfredy »

Buenos dias,

Tengo una tabla de datos que siempre va a tener una columna para el valor de un producto antes de iva, y otra para el valor del iva. Con esos datos debo generar un informe que solo permite una columna de valores, pero no se pueden sumar porque el valor antes de iva va a una cuenta y el iva a otra.Como durante el mes se generan muchos registros gasto tiempo estando insertando manualmente debajo de la linea antes de iva otra para incluirle el iva. Además no todos los productos tienen iva y por ende para esos casos, no habría que insertar ninguna fila. Y además, a la tabla de informe no le puedo modificar el diseño.

Con el ejemplo sencillo del adjunto muestro lo que quiero decir: El tornillo tiene iva y por ende, en la tabla de informe, debajo de la fila 12 debo ingresar una fila para que se copie el valor del iva. El valor del iva lo coloqué en la columna D buscando filtrar los productos que sí tienen iva. Para este sencillo ejemplo solo son dos. De manera que debajo de la fila 14 también debo insertar una fila para colocar el valor 80.

Había pensado en usar la fórmula SI para esto, buscando que si la columna D es numérica, se insertara una fila debajo de la celda que cumpliera esa condición y se copia el valor que aparece en la celda que cumple con la condición. Creo que con fórmula no se puede, por eso recurrí a una macro. Pero como no conozco mucho del tema tengo solo un código que de acuerdo a la selección, inserte una fila completa debajo de esa celda. El problema de este código como lo tengo es que yo debo colocar el mouse en la celda que tiene el valor y pues técnicamente no hago nada pues es más rápido dar click contrario e insertar


Sub Insertafila()
Dim oVal As Object
Dim oHojaActiva As Object
Dim lFila As Long

oVal = ThisComponent.getCurrentSelection()

If IsNumeric(oVal.getValue) Then
lFila = oVal.getCellAddress.Row + 1
oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
oHojaActiva.getRows.insertByIndex(lFila,1)

End If

End Sub

No he podido avanzar pues como mencioné antes, en la columna D van a haber varias celdas que cumplen la condición de ser número.
Al final lo que quiero es un resultado como se muestra en el adjunto.

Si alguien me puede dar una mano con esto muchas gracias.
Adjuntos
ejemplo.ods
(16.86 KiB) Descargado 172 veces
Última edición por jhonfredy el Vie Feb 21, 2020 11:34 pm, editado 1 vez en total.
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Insertar fila si cumple una condicion

Mensaje por fornelasa »

Según yo, tendría que ser algo similar a este archivo.
Te colocas en la celda D12 y corres la macro.
Sugiero la adaptes a tus necesidades. o repite la macro cuantas veces sea necesario.
Saludos.
Adjuntos
ejemplo (4).ods
Insertar filas
(20.1 KiB) Descargado 312 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

[RESUELTO]Re: Insertar fila si cumple una condicion

Mensaje por jhonfredy »

Buena tarde, muchas gracias, en efecto es lo que necesito.
OpenOffice 3.1 en Windows Vista
Responder