Jump to content

JaimeDavid27

Members
  • Content Count

    22
  • Joined

  • Last visited

Everything posted by JaimeDavid27

  1. Funciona a la perfección, tal y como lo necesitaba, muchas gracias, no conocía eso de los controles.por favor dar paso a cerrar el tea. PD: adjunto el archivo por si alguien lo necesite Libro1.zip
  2. Saludos, Si no me equivoco... es esto lo que necesitas? te colocas sobre alguna celda que tenga los "semaforos" y luego ejecutar la macro con "F8" va a contar los que cumplen con la condición que está el formato condicional... me comentas... Matriz Especialidades (mod).zip
  3. Saludos, Con el permiso de: chkenshin sería así: Sub copiarh() Application.Calculation = xlCalculationManual Workbooks.Open Filename:="C:\Users\EFACCI\Desktop\FO-RH23-2.xls" Dim milibro As Object Set milibro = ThisWorkbook Sheets("Checadas").Select ' si no le pones el destino a que libro deseas copiar la hoja siempre te creará un libro nuevo Sheets("Checadas").Copy after:=milibro.sheets(1) milibro.Activate Cells.Copy Cells.PasteSpecial xlPasteValues Application.CutCopyMode = False Application.Calculation = xlCalculationAutomatic End Sub [/CODE] con eso no deberías tener problemas, pues conviertes toda la hoja a valores
  4. Saludos a todos de esta gran comunidad, nuevamente recurro a ustedes para que me ayuden a un gran problema que tengo y no encuentro solución. El excel que adjunto sólo tiene la información necesaria para tales fines, dicho excel conecta una BD y obtiene la información necesaria, pero esta consulta no siempre tienen las mismas columnas, pues dependiendo del formulario en que se esté, obtiene la información y el problema se origina aquí: Al mostrar un formulario que tiene 5 label y 5 textbox, todo ellos están por defecto con una visibilidad de "false", al mostrarse el formulario en el evento "Initialize", este muestra la cantidad de objetos necesarios según la cantidad de columnas, actualmente esto funciona con IF, pero se quiere hacer que esto funcione con una estructura repetitiva, un FOR, en el archivo adjunto encontrarán mucho mas detalle así como los formularios y demás. Espero poder haberme explicado y desde ya muchas gracias por su tiempo prestado. Libro1.zip
  5. Bueno te soy honesto estoy en mi celular ...... así que he hecho todo lo posible para poner bien explicado espero te sirva .... y he probado con las distintas fecha que me dices y no veo algo raro . ... he subido con otro nombre te dejo el link https://www.dropbox.com/s/614h272xwb1jmjp/JD_Form_MuestraEdad2.xlsm
  6. Ahora si entiendo mejor. ... https://www.dropbox.com/s/7tylbqp3bqnyf5r/JD_Form_MuestraEdad.xlsm A descargar el archivo .... creo que ahora si cumple con lo que necesitas aunque es de una manera muy rudimentaria tal vez pueda ser de utilidad .... al llegar a mi casa pienso en una más elaborada.... Saludos
  7. Saludos, Espero te sirva..... https://www.dropbox.com/s/t3zl2jgqthyepuk/JD_vba_ReuneData_1Hoja.xlsm JD - - - - - Mensaje combinado - - - - - Saludos, Espero te sirva..... https://www.dropbox.com/s/t3zl2jgqthyepuk/JD_vba_ReuneData_1Hoja.xlsm JD
  8. Saludos, No soy muy bueno con formularios.... pero espero te sirva el archivo....... https://www.dropbox.com/s/7tylbqp3bqnyf5r/JD_Form_MuestraEdad.xlsm Me comentas
  9. Re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Saludos nuevamente.... despues de probar y probar... y realizar todo tipo de pruebas... este es mi codigo final en el cual funciona todo a la perfección. Public Tablas As Variant Sub HomeFiltro() Dim Filtro As String Dim Valor As String Application.ScreenUpdating = False Application.Run "Secur_Sheets_Protect", 0, "HOME", "AÑO", "MES", "DIA", "SEGMENT_CAMPA", "CARGO_AUDIT", "COORD_AGEN", "PARETO", "PRECISIONES", "IMPRESION" Select Case Application.Caller Case "lst_Anio" Filtro = "AÑO" Valor = Range("Home_PivotAño") Tablas = Array("pt_Home_Año") Case "lst_Mes" Filtro = "MES" Valor = Range("Home_PivotMes") Tablas = Array("pt_Home_Mes", "pt_Mes_Mes_Porcentaje", "pt_Mes_Mes_Pec") Case "lst_Dia" Filtro = "DIA" Valor = Range("Home_PivotDia") Tablas = Array("pt_Home_Dia", "pt_Dia_Dia_Porcentaje", "pt_Dia_Dia_Pec") Case "lst_Segmento" Filtro = "SEGMENTO" Valor = Range("Home_PivotSegmento") Tablas = Array("pt_Home_Segmento_Cnt", "pt_Home_Segmento_Prc", "pt_Precisiones_Prc", "pt_Segment_Campa_Pec") Case "lst_Campania" Filtro = "CAMPAÑA" Valor = Range("Home_PivotCampania") Tablas = Array("pt_Home_Campaña", "pt_Segment_Campa_xy") Case "lst_Tipo" Filtro = "TIPO LLAMADA" Valor = Range("Home_PivotLlamada") Tablas = Array("") Case "lst_Cargo" Filtro = "CARGO" Valor = Range("Home_PivotCargo") Tablas = Array("pt_Home_Cargo") Case "lst_Auditor" Filtro = "AUDITOR" Valor = Range("Home_PivotAuditor") Tablas = Array("pt_Home_Auditor") Case "lst_Coordinador" Filtro = "COORDINADOR" Valor = Range("Home_PivotCoordinador") Tablas = Array("pt_Home_Coordinador") Case "lst_Agente" Filtro = "AGENTE" Valor = Range("Home_PivotAgente") Tablas = Array("pt_Home_Agente") End Select Application.Run "Actualiza_Listas" Application.Run "PivotControl_Filtro", Filtro, Valor Application.ScreenUpdating = True End Sub Private Sub PivotControl_Filtro(Filtro, Valor As String) ', ParamArray Hojas() As Variant) Dim pt As PivotTable Dim PvtTbl As PivotTable On Error Resume Next 'HojasPivot son las hojas que recorrerá la macro para actualizar las tablas dinamicas a nivel de filtro, sin embargo sólo actualizará las tablas dinamicas que está en la variable a nivel global, sólo si no da error HojasPivot = Array("HOME", "AÑO", "MES", "DIA", "SEGMENT_CAMPA", "CARGO_AUDIT", "COORD_AGEN", "PARETO", "PRECISIONES", "IMPRESION") For i = 0 To UBound(HojasPivot) For Each pt In SHEETS(HojasPivot(i)).PivotTables pt.PivotFields(Filtro).CurrentPage = Valor Next pt Next i For i = 0 To UBound(HojasPivot) For y = 0 To UBound(Tablas) Worksheets(HojasPivot(i)).PivotTables(Tablas(y)).PivotFields("(Todas)").ClearAllFilters If Valor <> "(Todas)" Then For Each pvtItm In Worksheets(HojasPivot(i)).PivotTables(Tablas(y)).PivotFields("(Todas)").PivotItems If pvtItm = Valor Then pvtItm.Visible = True Else pvtItm.Visible = False End If Next End If Next y Next i End Sub [/CODE] Realmente muchas gracias [color=#4D5153]mjrofra, por tu ayuda y por darme pistas para optimizar otras macros en donde se le dan variables como arrays, ahi eh resumido un monton de codigo en otras macros..., nuevamnete gracias. [/color] y dar por cerrado el tema. [color=blue]- - - - - Mensaje combinado - - - - -[/color] Saludos nuevamente.... despues de probar y probar... y realizar todo tipo de pruebas... este es mi codigo final en el cual funciona todo a la perfección. [CODE] Public Tablas As Variant Sub HomeFiltro() Dim Filtro As String Dim Valor As String Application.ScreenUpdating = False Application.Run "Secur_Sheets_Protect", 0, "HOME", "AÑO", "MES", "DIA", "SEGMENT_CAMPA", "CARGO_AUDIT", "COORD_AGEN", "PARETO", "PRECISIONES", "IMPRESION" Select Case Application.Caller Case "lst_Anio" Filtro = "AÑO" Valor = Range("Home_PivotAño") Tablas = Array("pt_Home_Año") Case "lst_Mes" Filtro = "MES" Valor = Range("Home_PivotMes") Tablas = Array("pt_Home_Mes", "pt_Mes_Mes_Porcentaje", "pt_Mes_Mes_Pec") Case "lst_Dia" Filtro = "DIA" Valor = Range("Home_PivotDia") Tablas = Array("pt_Home_Dia", "pt_Dia_Dia_Porcentaje", "pt_Dia_Dia_Pec") Case "lst_Segmento" Filtro = "SEGMENTO" Valor = Range("Home_PivotSegmento") Tablas = Array("pt_Home_Segmento_Cnt", "pt_Home_Segmento_Prc", "pt_Precisiones_Prc", "pt_Segment_Campa_Pec") Case "lst_Campania" Filtro = "CAMPAÑA" Valor = Range("Home_PivotCampania") Tablas = Array("pt_Home_Campaña", "pt_Segment_Campa_xy") Case "lst_Tipo" Filtro = "TIPO LLAMADA" Valor = Range("Home_PivotLlamada") Tablas = Array("") Case "lst_Cargo" Filtro = "CARGO" Valor = Range("Home_PivotCargo") Tablas = Array("pt_Home_Cargo") Case "lst_Auditor" Filtro = "AUDITOR" Valor = Range("Home_PivotAuditor") Tablas = Array("pt_Home_Auditor") Case "lst_Coordinador" Filtro = "COORDINADOR" Valor = Range("Home_PivotCoordinador") Tablas = Array("pt_Home_Coordinador") Case "lst_Agente" Filtro = "AGENTE" Valor = Range("Home_PivotAgente") Tablas = Array("pt_Home_Agente") End Select Application.Run "Actualiza_Listas" Application.Run "PivotControl_Filtro", Filtro, Valor Application.ScreenUpdating = True End Sub Private Sub PivotControl_Filtro(Filtro, Valor As String) ', ParamArray Hojas() As Variant) Dim pt As PivotTable Dim PvtTbl As PivotTable On Error Resume Next 'HojasPivot son las hojas que recorrerá la macro para actualizar las tablas dinamicas a nivel de filtro, sin embargo sólo actualizará las tablas dinamicas que está en la variable a nivel global, sólo si no da error HojasPivot = Array("HOME", "AÑO", "MES", "DIA", "SEGMENT_CAMPA", "CARGO_AUDIT", "COORD_AGEN", "PARETO", "PRECISIONES", "IMPRESION") For i = 0 To UBound(HojasPivot) For Each pt In SHEETS(HojasPivot(i)).PivotTables pt.PivotFields(Filtro).CurrentPage = Valor Next pt Next i For i = 0 To UBound(HojasPivot) For y = 0 To UBound(Tablas) Worksheets(HojasPivot(i)).PivotTables(Tablas(y)).PivotFields("(Todas)").ClearAllFilters If Valor <> "(Todas)" Then For Each pvtItm In Worksheets(HojasPivot(i)).PivotTables(Tablas(y)).PivotFields("(Todas)").PivotItems If pvtItm = Valor Then pvtItm.Visible = True Else pvtItm.Visible = False End If Next End If Next y Next i End Sub [/CODE] Realmente muchas gracias [color=#4D5153]mjrofra, por tu ayuda y por darme pistas para optimizar otras macros en donde se le dan variables como arrays, ahi eh resumido un monton de codigo en otras macros..., nuevamnete gracias. [/color] y dar por cerrado el tema.
  10. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Muy Interesante al igual que sugenrencia... voy a probar y te comento....
  11. Re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Saludos nuevamente y gracias pro la ayuda incondicional, realmente el archivo adjunto esta de lujo!!!, pero (cargoso yo) realmente no lo entiendo..... sobre todo en esa parte del codigo del Case Select Case Application.Caller Case "lstYear" Filtro = "AÑO" Valor = Range("Home_PivotAño") Case "lstMonth" Filtro = "MES" Valor = Range("Home_PivotMes") Case "lstDay" Filtro = "DIA" Valor = Range("Home_PivotDia") End Select [/CODE] Realmente me perdí... y bueno esos filtro son solo unos cuantos.... trato de amoldar el case, a los demás filtros que tengo.. pero no me funciona... pero sí tengo que rescartar... algo muy interesante... (algo que realmente no se me ocurrió) que a la macro Pivotcontrol es pasar una variable Array y ahí indicar que tablas se van a sincronizar...., y también que tablas van a hacer otro procedimiento.... el otro detalles que también en el mismo archivo al modificar un filtro de una hoja también se debe de actualizar en las demás.... en breve adjunto una muestra..... pero si me has dado luces e ideas bien interesantes..... Nuevamente Gracias!!!!!! [color=blue]- - - - - Mensaje combinado - - - - -[/color] Nuevamente por aqui.... tratando de encajar.... las macros.... pero no me funciona..... un momento de desesperación..... me quede con unos cuantos pelos en la mano... y no es broma realmente me paso ello, por favor nuevamente tu ayuda ya que esta en en la forma que lo quiero hacer.... así se me es mas facil de interpretar.... puesto que sólo quiero que actualice algunas columnas en específico..., bueno con el archivo adjunto creo que vas a entender que es lo que deseo hacer exactamente...... Copia de Control TMP Mod.zip
  12. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Muy interesante de verdad.... pero hay un problema más ..... bueno en esa hoja si bien es cierto el archivo original que subi... las TD mostradas que es el de prueba.... muestra registros y cosas similares, sin embargo en la misma hoja tambien hay 3 TD que usan los mismos criterios (Año, Mes, Dia) pero son de otro lado, es decir de otra fuente, al aplicar el for indicado actualiza todos ... de canto... una solución posible es cambiar ese "AÑO" por un nombre similar "AÑO ", al ser así sería diferente, aun no he hecho la prueba..... pero adjunto el mismo archivo con dos soluciones (agrege otro array), en donde "PivotControl" es el codigo que me has dado (Que funciona de mil maravillas" y el otro que es "Pivot_Control", en donde se indica que tablas es específico se va a actualizar.... Te agradecería que puedas darle una revisión y me puedas aconsejar en que se puede resumir....., igual Gracias de antemano por tu tiempo y ayuda Control TMP Mod.zip
  13. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Gracias mjrofra, esta perfecto, pocas lineas, y funciona de mil maravillas, estaba haciendo algo así pero me daba un error de que no encuentra la propiedad del filtro o algo así, por ello es que opte en realizar, los arrays, que si era un lio, pero con esto esta resuelto, pero consulta sobre esta parte. "On Error Resume Next" Al poner esta línea de codigo, dice que cada vez que encuentra un error, no se planta, sino que sigue, es correcto??
  14. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Gracias mjrofra, he revisando el link y realizado una copia del código, sin embargo, no consigo que funcione, a parte de ello, la verdad no comprendo mucho del codigo puesto ... me das una mano?? sobre todo en esta parte [B]For[/B] [B]Each[/B] ws [B]In[/B] callerPT.Parent.Parent.Worksheets [COLOR=#999988][I]' recorre cada una de las tablas dinámicas que se encuentran en la hoja de[/I][/COLOR] [B]For[/B] [B]Each[/B] pt [B]In[/B] ws.PivotTables [B]If[/B] pt [B]Is[/B] callerPT [B]Then[/B] [COLOR=#999988][I]' no hay necesidad de hacer nada, es la tabla que disparó el evento[/I][/COLOR] [B]Else[/B] [COLOR=#999988][I]' se recorre cada uno de los campos de la tabla dinámica en cuestión y se[/I][/COLOR] [COLOR=#999988][I]' actualiza el filtro, si lo tiene, para que sea igual al de la tabla que[/I][/COLOR] [COLOR=#999988][I]' se cambio originalmente[/I][/COLOR] [B]For[/B] [B]Each[/B] pf [B]In[/B] pt.PivotFields pt.PivotFields(pf.Name).CurrentPage [B]=[/B] callerPT.PivotFields(pf.Name).CurrentPage.Name [B]Next[/B] pf [B]End[/B] [B]If[/B] [B]Next[/B] pt [B]Next[/B] ws [/CODE] en el primer for me pierdo, el "[color=#000000][font=Consolas]callerPT" entiendo que es el nombre de la TD que ha sido modificada, pero lo de parent... no comprendo en nada[/font][/color]
  15. Saludos a todos, Nuevamente recurro a ustedes porque por mas que intento y pruebo no consigo dar solución. El problema es el siguiente, en el fichero adjunto tengo una serie de tablas dinámicas, (en realidad son muchas mas) las cuales se van a actualizar en base a un ListBox (no ActiveX) que esta en la misma hoja, (estoy elaborando una especie de Dashboard), es por ello que de las TD puestas en el Adjunto (que son las de prueba), serán actualizadas en base al valor que indique en el Lb, pero el problema es que las tD no todos tiene el mismo "Filtro de Informe", con lo cual la macro debe de detectar y aplicar el filtro únicamente a las TD que tengan ese "Filtro" de lo contrario pasará a la siguiente TD, la lista de las TD, están indicadas en un array dentro de la misma macro que esta en el archivo adjunto. A la espera de su generosa Ayuda. Control TMP Mod.zip
  16. Saludos, Gerson y ioyama, son grosos en el ámbito, la ultima solución por parte de Gerson en el archivo adjunto es justo lo que necesito, y si, la cantidad de variables es bastante amplia (me refiero a las filas) y en las columnas son un total de 13 columnas, hace pocos minutos descargue el archivo y va muy bién en ambas soluciones, aunque con la primera solución la entiendo mejor, dado que hace un filtrado de los únicos y de ahí vulve a colocar en el validador, que es muy bueno, e ingeniosa, no sabía que se podía hacer ello, así aprendo un poco mas de las macros que con varios tropiezos voy aprendiendo y descubriendo mas. Gracias a la comunidad que de aquí he aprendido bastante, ya en otro post los molestaré con otro tema que también tengo, pero sera en unos minutos, nuevamente gracias por la solución ya que se ajusta a mis necesidades. PD: por favor aun no cierren el tema ya que al finalizar subiré el archivo ya finalizado con la solución que me han presentado, será en estos días.
  17. Saludos a ioyama y a Gerson, bueno en ello tienes razón ioyama, no indiqué para que es lo que quiero esas validaciones, lo que necesito es para enlazar tablas dinámicas, gráficos y algna que otra fórmula, estoy armando un Dashboard en Excel (2007), para ser mas tengo un libro con varias hojas una de ellas se llama "Hoja1" en donde esta toda mi data fuente y en otra se llama "Control" en donde esta el Dashboard, en la parte superior izquierda quiero poner una serie de listas, (la info es de un Call Center) así que quiero ver por, año, mes, semana, día, hora, Supervisor, Agente y demás, cada uno de ellos tendrá una lista con los datos de determinada columna de la "Hoja1", pero para la lista necesito los valores únicos, por ello puse el archivo a modo de ejemplo y de ahi partir con lo demás. Una vez teniendo esas listas, al modificar el valor de una de las celdas en donde esta mi filtro central, se filtrarán las demás tablas dinámicas (pivot.fields) en base a la celda y el valor que contenga, en unos minutos subiré un archivo de muestra dado que el que estoy usando es sumamente pesado. En un comienzo estaba usando para el mismo fin una tabla dinámica como el primer archivo que puse, sin embargo si tengo 8 o 9 listas, para seleccionar, ello implica tener 8 o 9 Tablas dinámicas, lo que hace que el peso del archivo aumente, y el proceso del mismo sea mas lento, claro ello hablando de que al día hay un aumento de 3k o 5k de registros al día, al final de mes se tendría aproximadamente 150k (150 mil) registros ese peso de sólo los registros (va al rederdor de 40 o 50 megas), mas las formulas, gráficos y las tablas dinámicas para los informes mas las tablas dinámicas para las listas, el peso aumenta considerablemente, es por ello que quería poder extraer los valores únicos a una lista en una celda, sin hacer ese paso previo de extraer los únicos, así me estaría ahorrando unas cuantas TD. Espero haberme explicado y ser entendido, igual gracias por su valioso tiempo y ayuda.
  18. Hola Gerson, Muy buena la solución e interesante, sin embargo, lo que realmente necesito es poder hacer lo mismo sin ese paso intermedio extraer los valores únicos y desde ahí realizar la lista, sino que directamente desde la fuente poder obtener los valores unicos de una, ya sea con macro, o formula, sin hacer ese paso intermedio, Como referencia al archivo que me has enviado en el caso del mes, de la fila A se obtiene los unicos y se coloca en la columna G, y en la celda K2 la lista de la columna G, sino que en la celda K2, mostrar la lista de valores únicos directamente desde la columna A no se si me deje entender....
  19. Saludos, Nuevamente acudo a su ayuda, tengo un archivo con varias columnas, lo que necesito es poder obtener una lista de valores únicos el cual ira en una celda con "validación de datos", estuve probando de varias formas, pero la más practica que he llegado es a hacer tablas dinámicas y así tener los valores únicos, para luego con un desref usar la lista, pero si son muchas columnas... tendría que hacer una TD por cada lista..., el archivo será muy pesado y no eficiente, entonces quisiera saber por medio de una formula, función o macro definida por el usuario, que se pueda hacer lo que necesito, a la espera de su ayuda. En resumen, deseo hacer lo mismo pero sin la necesidad de la Tabla Dinámica Adjunto el archivo de muestra Valores_Unicos.xls
  20. Gerson, eres Groso!!, pero me puedes explicar a grandes rasgos como es que funciona?, la verdad me pierdo un poco con el offset, llego a comprender que toma el numero, busca en el rango, obtiene la fila y de ahí me pierdo con el resize y el offset
  21. Saludos, Seré breve, tengo una matriz de 11 columnas (puede ser variable por cada mes), 10 con números y la ultima (11) tiene un código, que es el que necesito, el problema es que la formula que uso, si.error(busca,si.error(busca,si.error....., por cada columna la formula es lenta si se va a hacer un una cantidad de 4 mil a 5 mil registros al día, ahora quisiera que me puedan ayudar en como poder simplificar, ese proceso búsqueda, dado que en un determinado mes, la cantidad total de columnas puede variar, a mas o a menos, que ello depende del cliente, si se puede con macros, perfecto, si no con formula pero lo que si es necesario es poder simplificar la formula. Adjunto un archivo como muestra a modo de referencia. PD: encontré un tema con la misma consulta pero el linck del archivo ya estaba expirado, dado que el tema era del 2010. Desde ya muchas gracias por su ayuda y tiempo Muestreo.rar
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png