Ocultar filas automáticamente en varias hojas

Resuelto
Stephxx -  
Stephxx Mensajes publicados 26 Estado Miembro -
Hola a todos,

He creado un libro de dos páginas. La primera contiene en la columna A una lista de artículos con sus parámetros en las columnas B y C. Los usuarios del archivo aplican sus filtros en las columnas B y C para conservar solo ciertos artículos. Un cierto número de artículos, es decir, de filas, quedan entonces ocultos.
me gustaría que aparecieran en la columna A de la página 2 los mismos artículos que se muestran en la columna A de la hoja1, es decir, todas las filas que no están ocultas. ¿Alguna idea?

Detalle:

Hoja1

A B C
Fila1 Artículo

Fila2 toto

Fila4 tata

Fila9 tonton

Las filas 3, 5, 6, 7, 8 quedan ocultas por los filtros en las columnas B y C.

Quiero obtener una hoja 2 con:
Hoja2
A
Fila1 Artículo

Fila2 toto

Fila3 tata

Fila4 tonton

De preferencia con fórmulas, más sencillo para mis usuarios. Con una macro, debería activarse cada vez que se aplique un filtro, pero también si un usuario oculta a mano una fila en la hoja 1.

Gracias de antemano.

Configuración: Mac OS X (10.10.4) / Safari 8.0.7

2 respuestas

  1. via55 Mensajes publicados 14393 Fecha de registro   Estado Miembro Última intervención   2 759
     
    Hola

    Por fórmula no creo que sea posible probar si una línea está oculta

    Con una macro se puede hacer una macro situada en la Hoja de cálculo de la 2ª hoja que se active tan pronto como se seleccione la hoja 2

    Private Sub Worksheet_Activate() Dim Línea As Long 'última fila no vacía hoja 1 Línea = Sheets(1).Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row ' Bucle sobre las filas hoja 1 For n = 1 To Línea ' si la fila n no está oculta If Sheets(1).Rows(n).Hidden = False Then 'incrementación de variable i para la fila i = i + 1 'Bucle sobre las columnas 1 a 3 de hoja 1 (a adaptar si es necesario) For c = 1 To 3 ' Copia las celdas en hoja 2 Sheets(2).Cells(i, c) = Sheets(1).Cells(n, c) Next c End If Next n End Sub


    Para colocar la macro en la Worksheet hoja 2 :
    ALT + F11 para abrir el editor de VBA
    Seleccionar haciendo doble clic la Hoja 2 en el árbol
    Copiar pegar la macro en la página
    Cerrar el editor

    Cdlmnt
    Via

    --
    "La imaginación es más importante que el conocimiento." A. Einstein
    1
    1. Stephxx Mensajes publicados 26 Estado Miembro
       
      Gracias Via, este código funciona perfectamente.

      Busco hacerlo evolucionar y he llegado al código siguiente que permite ocultar de manera idéntica las filas de la hoja 2 a partir de la de la hoja 1.

      Sub Macro1()
      Dim Ligne As Long
      i = 5
      Ligne = Sheets(1).Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
      For n = 5 To Ligne
      If Sheets("Données").Rows(n).Hidden = True Then
      Sheets("Détail").Rows(i).Hidden = True
      i = i + 1
      Else: Sheets("Détail").Rows(i).Hidden = False
      i = i + 1
      End If
      Next n
      End Sub


      ahora busco obtener el precio total de la orden en una celda, es decir: multiplicar el número de artículos pedidos (hoja2 columna B) por el precio unitario (hoja1 columna C). Inicialmente obtenía este precio total con la función SOMA.PROD: ""=SOMMEPROD(Hoja2!B5:B2000;Hoja1!$C5:$C2000)""

      ¿conoce alguna función equivalente a SOMMEPROD pero que no tenga en cuenta las filas ocultas? He explorado SUBTOTALES pero sin éxito.
      0
    2. via55 Mensajes publicados 14393 Fecha de registro   Estado Miembro Última intervención   2 759 > Stephxx Mensajes publicados 26 Estado Miembro
       
      Es correcto usar SOUS.TOTAL, de hecho, por ejemplo para obtener el total de las filas no ocultas de la columna C:
      =SOUS.TOTAL(9;C:C)
      0
    3. Stephxx Mensajes publicados 26 Estado Miembro
       
      La función SOUS.TOTAL(9, ...) da la suma de valores, quiero el equivalente de SOMA.PROD que da la suma del producto de dos columnas (C1*B1 + C2*B2 + C3*B3 + ...).

      PD: lo detallo por si acaso pero supongo que esta función ya es bien conocida :)
      0
    4. via55 Mensajes publicados 14393 Fecha de registro   Estado Miembro Última intervención   2 759 > Stephxx Mensajes publicados 26 Estado Miembro
       
      Se debe basar en la columna que filtra
      Si por ejemplo el filtro es una X en la columna D y los precios en la columna C
      =SOMMEPROD((C2:C2000)*(D2:D2000="X"))
      0
    5. Stephxx Mensajes publicados 26 Estado Miembro
       
      Gracias Via, había visto esta solución pero los usuarios finales filtrarán según criterios múltiples no determinados. No podemos apoyarnos en esta solución.
      0
  2. Stephxx Mensajes publicados 26 Estado Miembro
     
    El tema está resuelto, desafortunadamente no había iniciado sesión cuando lo publiqué, imposible marcarlo como tal. ARTÍCULO RESUELTO, gracias.
    0