Como ocultar filas dependiendo de un valor.

Acudo a ti para consultarte lo siguiente:
Tengo en una hoja "x" un listado con capacidad hasta 200 registros.
En la hoja "y" tengo un formulario de 7 filas que se llena con la información de la hoja "x", lo que deseo es que si en la hoja "x" hay por ejemplo 20 registros en la hoja "y" se oculten las filas 100 a la 1000, si en la hoja "x" hay por ejemplo 100 registros en la hoja "y" se oculten las filas 500 a la 1000 y así.
¿Me explico? En la hoja "y" son 7 filas por cada registro de la hoja "x" y deseo que se oculten las filas que quedan sin usar dependiendo de la cantidad de registros en la hoja "x".

1 respuesta

Respuesta
1
A ver si así de cabeza atinamos con lo que necesitas:
Suponemos que en la Hoja por tienes registros desde la celda A1 hasta la A30, osea 30 registros, a partir del 30 las celdas estarán vacías en la columna A
Sub Ocultar_Filas()
Dim celda As String
Dim fila As Integer
Dim valor As Integer
Sheets("HojaX").Select
Range("A1").Select 'Nos situamos en la primera celda
ActiveCell.End(xlDown).Select ' Nos situamos en la ultima celda con datos de la Columna  'A
celda = ActiveCell.Address 'Pasamos a variable la posicion de la celda
fila = Mid(celda, 4) 'Pasamos a variable el numero de fila que hace la ultima celda sera 30
valor = fila * 2 + 1 'Calculamos cuantas filas debemos de dejar visibles en la HojaY '30*7=210
Sheets("HojaY").Select 'Ponemos activa la HojaY
Rows("1:1400").Select 'Seleccionamos toda la plantilla
Selection.EntireRow.Hidden = False 'Mostramos todas las filas por si hay alguna oculta de 'la vez anterior
Rows("" & valor & ":50").Select 'Ahora seleccionamos las filas a ocultar
Selection.EntireRow.Hidden = True 'Las ocultamos
End Sub 'Fin de la macro
Si te ha servido puntúa y finaliza la consulta. Gracias.
>Un saludo
>Julio
Creo no me expliqué bien y disculpa por eso. A ver si ahora lo hago mejor porque me quede pensando en una posible solución.
Contenido hoja "x": de la A1 a la D1 Encabezado. De la A1 a la A200 posibles registros.
Contenido Hoja "y" de la A3 a la A9 formulario con la información de UN solo registro de la hoja "x" por ejemplo el de la A2 a la D2 . De la A10 a la A17 formulario con el registro siguiente de la hoja "x" A3 a la D3, y así sucesivamente a hasta la A1400.
Ahora imagina que en la hoja "x" hay 3 registros no más.
Lo que me gustaría me ayudaras es con una macro que:
1.- Cuente en la hoja "x" la cantidad de registros (puede ser con contar.si) que efectivamente hay.
2.- Que multiplique esos registros por 7.
3.- Que se ubique en la hoja "y" y oculte las filas que no tendrán información, para el ejemplo de 3 registros debe ocultar las filas de la 24 hasta la 1400.
4.- Que lo haga automáticamente para poder asignar la macro a un botón y ejecutarla tantas veces como sea necesario.
Te agradezco un mundo.
Saludos y gracias por tu ayuda.
Esta macro hace esto que has pedido, pero exactamente exactamente. La única diferencia es que tú en la Hoja Y empiezas a poner los registros en la celda A3 y yo puse A1 quedaría así entonces:
Sub Ocultar_Filas()
Dim celda As String
Dim fila As Integer
Dim valor As Integer
Sheets("HojaX").Select
Range("A1").Select 'Nos situamos en la primera celda
ActiveCell.End(xlDown).Select ' Nos situamos en la ultima celda con datos de la Columna  'A
celda = ActiveCell.Address 'Pasamos a variable la posicion de la celda
fila = Mid(celda, 4) 'Pasamos a variable el numero de fila que hace la ultima celda sera 30
valor = fila * 2 + 3 'Calculamos cuantas filas debemos de dejar visibles en la HojaY '30*7=210
Sheets("HojaY").Select 'Ponemos activa la HojaY
Rows("1:1400").Select 'Seleccionamos toda la plantilla
Selection.EntireRow.Hidden = False 'Mostramos todas las filas por si hay alguna oculta de 'la vez anterior
Rows("" & valor & ":50").Select 'Ahora seleccionamos las filas a ocultar
Selection.EntireRow.Hidden = True 'Las ocultamos
End Sub 'Fin de la macro
Para poner esta instruccion en un boton habría que hacer lo siguiente:
1º Dibujar el boton en la hoja y al codigo poner
Sub CommandButton1_Click()
Call Ocultar_Filas
End Sub
Y Ahora en un módulo insertado poner la macro que te he puesto arriba.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas