[RESUELTO] Ocultar filas según condición

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
naves
Mensajes: 9
Registrado: Lun May 14, 2018 5:13 am

[RESUELTO] Ocultar filas según condición

Mensaje por naves »

Hola a todos:

Compañeros solicito de su apoyo para resolver la siguiente situación:

Tengo la intención de ocultar las filas "que no se necesiten" de un formato que se imprime a cliente, con la finalidad de que con ello se desperdicie menos papel.

Hasta el momento esto es lo que he conseguido:

Mediante el siguiente código trato de que si las celdas dentro del rango A5:A103 estan "vacias" oculte la fila en cuestión.

Código: Seleccionar todo

'OCULTAR FILAS VACIAS
Sub Ocultar
oSheet = ThisComponent.CurrentController.ActiveSheet
oCeldas = oSheet.getCellrangeByName("A5:A103")
oEmpty = oCeldas.queryEmptyCells(0)
If oEmpty.Count > 0 Then
   for i = 0 to oEmpty.Count - 1
      oRango = oEmpty.getByIndex(i)
      oFilas = oRango.getRows()
      oFilas.isVisible = FALSE
   next i
End If
End Sub
Las celdas de las columna A dentro del rango tienen la siguiente formula =SI($J7="","","solicitado"), haciendo con esto que estas celdas sirvan como referencia de si esta siendo solicitado el producto o no.

El problema es el siguiente, cuando ejecuto la macro para ocultar las filas funciona a medias
Imagen
Al ejecutar la macro me oculta las filas que en la primer columna estan "vacias" vacias, ya que si contienen formula como el caso de A6 y A7 no las oculta
Imagen

La cuestión es la siguiente:

¿Libreoffice toma a las celdas con formulas como celdas no "vacias"?

¿Si este es el caso, cómo puedo ocultar las filas que no cumplan la condición de tener solicitud de producto?

Adjunto archivo
Muchas gracias de antemano por su atención, saludos!!!
Adjuntos
MTOTAL.ods
(27.98 KiB) Descargado 314 veces
Última edición por naves el Lun May 28, 2018 3:11 am, editado 3 veces en total.
Libreoffice 5.2 en Debian 9
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Ocultar filas según condición

Mensaje por mauricio »

Si miras tu formula, la columna "real" de tu criterio para determinar si esta vacía, es la J, usa esta columna para la macro.

Saludos

P.D. Por favor, no escribas en solo mayúsculas los títulos de los temas
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
naves
Mensajes: 9
Registrado: Lun May 14, 2018 5:13 am

Re: Ocultar filas según condición

Mensaje por naves »

Hola Mauricio:

Gracias por tu respuesta, sobre lo que me comentas así lo intente en primera instancia ya que es la columna J la que interesa, pero sucede lo mismo, ya que no toma las celdas con formula como "vacias" ( La celdas de la columna J contienen formula).

Imagen

Cree la columna A como apoyo para realizar el ocultamiento de filas, pero descubri con ello que es más bien que la macro no reconoce las celdas con formulas como "vacias".

Alguna solución que se les ocurra? para ocultar las filas que en la columna J no contengan valor?

P.D. Perdona lo de las mayusculas en el título.

Saludos!
Libreoffice 5.2 en Debian 9
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Ocultar filas según condición

Mensaje por mauricio »

Utiliza entonces el método:

Código: Seleccionar todo

.queryFormulaCells(2)
que consulta por el valor del resultado de la formula, esto sobre la columna J,mira la documentación:
https://wiki.openoffice.org/wiki/ES/Man ... especiales

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
naves
Mensajes: 9
Registrado: Lun May 14, 2018 5:13 am

Re: Ocultar filas según condición

Mensaje por naves »

Hola Mauricio:

Antes que nada una disculpa por la demora de mi contestación (2 pequeñuelas me ocupan de tiempo completo) y además agradecerte por tu respuesta, es la solución que andaba buscando, efectivamente oculta las filas que cumplen con la cóndición.

También gracias por enlace que me proporcionas es muy informativo, se me aclaro la duda sobre el valor "vacio" en las celdas de calc.

Que tengas muy buenas noches, saludos desde León Gto.
Libreoffice 5.2 en Debian 9
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Ocultar filas según condición

Mensaje por mauricio »

naves escribió:León Gto.
México?, bueno, no creo que haya otro en el mundo... :lol:

De vez en cuando viajo por Guanajuato, la hermosa tierra de mi madre, es bueno saber que hay usuarios de nuestro foro tan cerca...

Un abrazo
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Andrespy
Mensajes: 4
Registrado: Jue Sep 27, 2012 8:31 pm

Re: [RESUELTO] Ocultar filas según condición

Mensaje por Andrespy »

Podrías compartir el resultado de tu solución en una planilla por favor?
Gracias.
He estado intentando ocultar celdas que contienen fórmulas pero el resultado que da esa formula es "no" (es decir texto que me da resultado de una formula sí)

no importa lo que diga el texto pero eso quiero ocultar. solo la celda que tenga una palabra no pero no entiendo mucho de macros.. he copiado el macros de la pregunta pero me oculta todas las celdas con formula no importando el resultado de la fórmula)

Desde ya muchas gracias por su ayuda.
agradecería un macro en el cual yo pueda definir la palabra a ocultar.
Andrespy
Versión: 6.1.3.2
Id. de compilación: 10(Build:2)
Subprocs. CPU: 1; SO: Linux 4.4; Repres. IU: predet.; VCL: gtk3_kde5;
Configuración regional: es-PY (es_PY.UTF-8); Calc: group threaded
Sistema operativo OpenSuse leap 42.3
Responder