Macro para actualizar tablas pivote _ayuda, auxilio!!

7 envíos / 0 nuevos
Último envío
mxkixh01
Imagen de mxkixh01
Offline
última acción: Hace 12 años 8 meses
alta: 14/04/2010 - 23:57
Puntos: 25
Macro para actualizar tablas pivote _ayuda, auxilio!!

 

 

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
Imagen de pacomegia
Offline
última acción: Hace 4 días 8 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11085
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

 

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

visitante (no verificado)
Imagen de 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
Imagen de pacomegia
Offline
última acción: Hace 4 días 8 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11085
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

 

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

visitante (no verificado)
Imagen de visitante
Re: For Each

me resolviste la vida

muchiiiiiiiiiiiiiiiiiiiiiiiisimas gracias

Hectorq (no verificado)
Imagen de visitante
Asunto

Y existe la posibilidad que cargar este evento en esa hoja especifica por macros? Es decir, yo estoy creando un libro por una Macro y necesito que en una hoja especifica del libro se cargue automaticamente este evento

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 4 días 8 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11085
crea una pregunta nueva

Por favor, para plantear una pregunta distinta crea un nuevo tema en el foro

 

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