Inicio de sesión

Nombre de usuario o e-mail

En línea

En este momento hay 1 usuario y 33 invitados en línea.

Macro para actualizar tablas pivote _ayuda, auxilio!!

mxkixh01

 

 

Hola, amigos  

  Por favor solicito su ayuda, necesito una macro que actualice 3 tablas pivote que tengo en una hoja. Todas las tablas tienen los mismos page fields pero diferentes analisis. El reto es que se actualicen desde los encabezados de la tabla pivote 1.
La macro no debe estar asociada a ningun boton, sino a los encabezados desplegables de la tablapivote 1

 

Es posible, muchas gracias amigos.


Por favor requiero ayuda urgente con este tema. 
 

pacomegia

Re: Macro para actualizar tablas pivote _ayuda, auxilio!!

Se me ocurre que utilices el evento PivotTableUpdate de la hoja donde se encuentra la tabla. Este Código tendría que estar en la hoja para detectar el evento.

Este evento tiene un argumento Target que representa la tabla dinámica que se actualiza.

puedes hacer que cuando la tabla que se actualice sea la tabla pivote 1, que aplique los campos de página a las demás tablas.

podría ser algo así (cambiando los nombres por los tuyos) El ejemplo tiene sólo un campo de página, sería parecido si tienes más de uno

Private Sub Worksheet_PivotTableUpdate_2(ByVal Target As PivotTable)
    ' este evento se produce cuando se actualiza una tabla dinámica
    ' esto incluye cuando se cambia el valor del campo de página
    Const Tabla1 = "Nombre de tu tabla 1"
    Const Tabla2 = "Nombre de tu tabla 2"
   
    Const CampoPagina = "tu campo de página"
   
    If Target.Name = Tabla1 Then
        ' ponemos los campos de página del resto de tablas iguales a los de la tabla 1
       
        ActiveSheet.PivotTables(Tabla2).PivotFields(CampoPagina).CurrentPage _
        = Target.PivotFields(CampoPagina).CurrentPage.Value
   
    End If
End Sub

Espero que te sirva o te dé alguna pista para lo que necesitas exactamente.

------
Ya sé Excel, pero necesito más

Visitante

Re: Macro para actualizar tablas pivote _ayuda, auxilio!!

Excelente mi Amigo!!

 

Asi es como la queria.

Se puede hacer que lo actualice para cada campo, para cualquier tabla nueva que se crea?? desde la tabla 1

 

Saludos

pacomegia

For Each

si tienes varias tablas, en la hoja, emplearía un bucle que las recorriese todas.

para eso defino una variable de objeto de tipo PivotTable, que emplearé en un bucle For Each que recorra todas las tablas dinámicas de la hoja.

he añadido también una condición para no actualizar la tabla 1,

por ejemplo, quedaría algo así

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    ' este evento se produce cuando se actualiza una tabla dinámica
    ' esto incluye cuando se cambia el valor del campo de página
    Const Tabla1 = "Nombre de tu tabla 1"
    Const CampoPagina = "tu campo de página"
    
    Dim tabla As PivotTable
    
    If Target.Name = Tabla1 Then
        ' ponemos los campos de página del resto de tablas iguales a los de la tabla 1
        For Each tabla In ActiveSheet.PivotTables
            If tabla.Name <> Tabla1 Then
            ' este if es para no aplicarlo a la propia tabla 1
              tabla.PivotFields(CampoPagina).CurrentPage _
                = Target.PivotFields(CampoPagina).CurrentPage.Value
            End If
        Next
    End If
End Sub
 

Para todos estos casos en que quieres aplicar lo mismo a todas las tablas, o a todas las hojas de libro, o a todos los gráficos de una hoja, etc. creo que lo mejor es emplear un bucle For Each. Así, además, la macro sigue siendo válida cuando añadas nuevos elementos, por ejemplo en tu caso, la macro funcionará siempre aunque añadas más tablas dinámicas.

------
Ya sé Excel, pero necesito más

Visitante

Re: For Each

me resolviste la vida

muchiiiiiiiiiiiiiiiiiiiiiiiisimas gracias

¿necesitas más?

apúntate a nuestro newsletter
Fuente RSS

Si te gusta necesitomas, ¡ compártelo !

Si te gusta, compártelo


apúntate a nuestro newsletter

cargando...
Buscar en necesitomas.com

Excelómetro