Saltar al contenido

Insertar cabecera en cada rango a imprimir


Recommended Posts

publicado

Hola a todos si alguien me puede ayudar con el siguiente caso:

Tengo una hoja llamada "enero" que contiene como 8,000 registros la cual tengo que imprimir, pero como ejemplo adjunto solo una parte, bueno el caso es que antes de inprimir necesito que al inicio de cada hoja aparesca la misma cabecera, tal como se muestra en la hoja "ener_imp",

y que tambien si es posible que aparesca las palabras van y vienen al final e inicio de cada hoja tal como se muestra en las letras de color rojo con su respectiva sumatoria asi como se encuentra.

cabe mencionar que en cada hoja entraran 104 filas incluido la cabecera y las letras de color rojo.

Gracias..

prueba_lib.xlsm

publicado
Hace 6 horas, Manuel TR dijo:

... 8,000 registros... tengo que imprimir, pero...antes... necesito que al inicio de cada hoja aparesca la misma cabecera, tal como se muestra en la hoja "ener_imp" y que tambien... aparesca las palabras van y vienen al final e inicio de cada hoja... con su respectiva sumatoria... en cada hoja entraran 104 filas incluido la cabecera y las letras de color rojo...

1) tu requerimiento (parece que) NO ES "tan sencillo como lo pintas", se trata de varios "grupos" con un (in)cierto número de registros que se identifican al final por 4 conceptos en la columna "E":
- saldo anterior > movimiento del mes > saldo actual > salto total

2) a cada "corte" (de 104 filas) se agregan:
- 2 filas con el "van"
- 6 filas con las cabeceras
- 3 filas para el "vienen"

3) estas inserciones NO SIEMPRE van a ocurrir en el lugar "más apropiado" para NO afectar las fórmulas de los registros del punto 1 anterior (resulta obvio, no ?)

4) por lo mismo, sería conveniente que incluyas en tu ejemplo (al menos) 5 "cortes de página" donde se incluyan (al menos) 2 situaciones como las descritas
- (esto para "ver" cómo exactamente estás resolviendo algún "corte incómodo" por las razones expuestas ?)

saludos,
hector.

publicado
Hace 7 horas, Héctor Miguel dijo:

1) tu requerimiento (parece que) NO ES "tan sencillo como lo pintas", se trata de varios "grupos" con un (in)cierto número de registros que se identifican al final por 4 conceptos en la columna "E":
- saldo anterior > movimiento del mes > saldo actual > salto total

2) a cada "corte" (de 104 filas) se agregan:
- 2 filas con el "van"
- 6 filas con las cabeceras
- 3 filas para el "vienen"

3) estas inserciones NO SIEMPRE van a ocurrir en el lugar "más apropiado" para NO afectar las fórmulas de los registros del punto 1 anterior (resulta obvio, no ?)

4) por lo mismo, sería conveniente que incluyas en tu ejemplo (al menos) 5 "cortes de página" donde se incluyan (al menos) 2 situaciones como las descritas
- (esto para "ver" cómo exactamente estás resolviendo algún "corte incómodo" por las razones expuestas ?)

saludos,
hector.

Hola Héctor, gracias por responder, buena observación de tu parte, tomando en cuenta tu sugerencia adjunto archivo con 5 "cortes de página".

Gracias

prueba_lib22.xlsm

publicado
En 22/12/2018 at 8:32 , Manuel TR dijo:

adjunto archivo con 5 "cortes de página"

con los datos de tu segundo adjunto, el código probado (me) ha devuelto un arreglo igual a la muestra que esperas obtener, incluyendo ajustes en algunas fórmulas intermedias

- descarga el adjunto (*.zip), lo descomprimes, y obtienes un *.bas
- ese *.bas lo IMPORTAS a tu archivo de excel desde el editor de VBA (archivo > importar archivo...)
- analiza los códigos, regresa a la interfaz de hoja de cálculo y ejecuta la macro

sobra recomendar que hagas pruebas sobre una copia de tus datos reales (por si las dudas ?)

prueba primero con el modelo de tu segundo adjunto y después con la hoja de las 8000 filas, ya que es muy probable que (en la realidad) se presenten casos que no pudieron ser analizados en tan corto ejemplo (espero que los menos ?), ya comentarás...

saludos,
hector.

ajustaCortes.zip

publicado
Hace 31 minutos , Héctor Miguel dijo:

con los datos de tu segundo adjunto, el código probado (me) ha devuelto un arreglo igual a la muestra que esperas obtener, incluyendo ajustes en algunas fórmulas intermedias

- descarga el adjunto (*.zip), lo descomprimes, y obtienes un *.bas
- ese *.bas lo IMPORTAS a tu archivo de excel desde el editor de VBA (archivo > importar archivo...)
- analiza los códigos, regresa a la interfaz de hoja de cálculo y ejecuta la macro

sobra recomendar que hagas pruebas sobre una copia de tus datos reales (por si las dudas ?)

prueba primero con el modelo de tu segundo adjunto y después con la hoja de las 8000 filas, ya que es muy probable que (en la realidad) se presenten casos que no pudieron ser analizados en tan corto ejemplo (espero que los menos ?), ya comentarás...

saludos,
hector.

ajustaCortes.zip

Hola Hector gracias por responder, al correr la macro en mi archivo con mas registros me salta un error en la siguiente linea:

r = Split(Range("a" & Join(Evaluate("transpose(row(1:" & g & ")*93+114)"), ",a")).Address, ",")

y me sale un aviso: se ha producido el error 1004 en tiempo de ejecución

no se encontro el elemento con el nombre especificado.

Quiero subir mi archivo pero no me deja ya que pesa 300kb y solo permite 102 kb

Gracias

 

publicado
Hace 3 horas, Manuel TR dijo:

... subir mi archivo... no me deja... 300kb y solo permite 102 kb

si confirmas que con la muestra pequeña si funciona pero no con la lista grande (?)

sube una muestra (real) en algún sitio de hospedaje gratuito (onedrive, googledrive, etc.) y publica el vínculo para su descarga en tu próximo mensaje

saludos,
hector.

publicado

Hola Héctor, Con la muestra pequeña si funciona, pero con la lista grande ya no, envío archivo de trabajo el cual contiene información de 2 años (2012 y 2013) separado cada mes por hoja de

enero 2012 y febrero 2012 ya estan terminados (es una muestra como deberia quedar)

marzo a noviembre 2012 ya tienen la cabecera solo falta el van y vienen con sus respectiva sumatoria

dic 2012 a dic 2013 falta insertar la cabecera y el van y el vienen con sus respectivas sumatorias

si resulta muy complicado todo ello, me seria de mucha ayuda y me basta con que se inserte el van y vienen con su respectivo calculo

el resto lo puedo hacer manualmente.

Adjunto archivo:

https://drive.google.com/file/d/1Li2j7tL650DWAyhAf_hv2jl-CwLjg2x0/view?usp=sharing

Muchas gracias

publicado
Hace 16 horas, Manuel TR dijo:

enero 2012 y febrero 2012 ya estan terminados (es una muestra como deberia quedar)

marzo a noviembre 2012 ya tienen la cabecera solo falta el van y vienen con sus respectiva sumatoria

dic 2012 a dic 2013 falta insertar la cabecera y el van y el vienen con sus respectivas sumatorias

sigue el mismo procedimiento indicado en el mensaje del adjunto anterior (.zip > .bas > etc.)

el (nuevo) código lleva comentada cada línea que deja de operar e inmediato después la línea que si funciona (por si quieres analizar los cambios)

comentarios:
- estos procedimientos están diseñados para "comenzar desde cero" (los reportes SIN inserciones "a medias" de cabeceras)
- hacer adaptaciones para determinar hasta donde has hecho inserciones en avanzada sería más laborioso que ingenioso, por lo tanto...
- los meses que tienes "medio" avanzados (mar-nov 2012 y parcial dic 2012) tendrías que "regresarlos a su estado original" :(

saludos,
hector.

ajustaCortesV2.zip

agrego: (dicho sea "de paso")...

tu adjunto se redujo de 10MB a 6MB por virtud de filas y columnas que no contenían datos (probablemente formatos y/o contenidos borrados ?)

publicado

Hola Héctor, lo acabo de revisar y esta muy bueno solo una observación al respecto, veo un caso donde no suma el saldo que arrastra, lo he sombreado de amarillo ya que varios que tienen ese inconveniente, en los demás casos no he encontré ningún problema.

https://drive.google.com/file/d/1Y6AuO21kQbV9O0dOQ2WVTBTzLcqQ39sO/view?usp=sharing

Si no fuera mucha molestia, por otra parte tu macro lo he modificado los rangos para adaptarlo a otro archivo que contiene un poco mas de columnas, pero tengo un problema en la sumatoria, este archivo es menos complejo ya que siempre suma los saldos finales de cada quiebre de hoja a la siguiente hoja y así sucesivamente. (el archivo contienen una hoja llamada "diario enero" y la hoja llamada "debe quedar así" que es como se desea.

https://drive.google.com/file/d/13RQkVSr5A7c3mOGBYPZtPMEDoQWPhi2Z/view?usp=sharing

Adjunto archivo de cada caso

Muchas gracias

publicado

la primera parte es una eventualidad que esperaba no se presentaría :( y tiene otra situación a prevenir/corregir con las fórmulas que ya pusiste en el concepto de "movimiento del mes" en algunos casos (estoy en ello, si no se adelanta algún participante)

la segunda parte va la propuesta en el adjunto (mismo procedimiento: .zip > .bas > etc.)

saludos,
hector.

sinGrupos.zip

publicado
En 26/12/2018 at 8:28 , Manuel TR dijo:

... sobre la primera parte... ojala se pueda resolver

resulta que sí encontré (posibles y varias pero no creo que todas) situaciones que necesitan ser cuidadosamente tratadas, considerando que cada "grupo" de registros/cuentas va delimitado al final por 4 conceptos (saldo anterior > movimiento del mes > saldo actual > saldo total)

la propuesta es resolver la separación del reporte con 6 procedimientos llamados en secuencia (desarrollados por separado para su análisis y comprensión) como lo son:

  1. cazaFantasmas: encontré en algunas hojas-mes que hay "grupos" (los 4 conceptos) que NO traen registros previos, para evitar que estorben se eliminan antes de cualquier otro proceso
  2. modificaSumas: el concepto "saldo actual" va precedido de "movimiento del mes" cuya sumatoria se interrumpe por el concepto "saldo anterior", se cambia la función SUMA por si algún corte la interrumpe
  3. preparaFase1: es la inserción de los cortes (van y vienen) y en el medio las filas de los encabezados (primer grupo para fácil inserción en el resto de separaciones)
  4. insertaFilas: es la inserción en cada corte para las primeras 11 filas de encabezados de cada "siguiente página"
  5. formulasCortesVAN: para identificar cuales son los conceptos que se cortan por la inserción de la suma de la hoja (el corte por VAN)
  6. formulasMovMes: el ajuste final de la suma para el concepto de "movimiento del mes"

este último procedimiento NO ajusta el "primer corte" (los 4 conceptos del primer grupo) porque las celdas "combinadas" de los encabezados ESTORBAN (y no quise alargar más los procedimientos)

como dije, no creo haber podido "simular" toda (posible) eventualidad de "donde cae" un corte y que conceptos o registros "separa" (?)

el siguiente paso es que comentes las fallas que encuentres (y que situación las causa) para adaptar y encontrar la forma de adelgazar/agilizar los procedimientos (?)

mismo proceso de los anteriores (.zip > .bas > etc.)

saludos,
hector.

ajustaCortesV3.zip

publicado

Hola Hector,  estuve un poco corto de tiempo por lo cual no pude responderte antes, pues bueno revise la macro y encontre solo una observación al respecto, cuando el corte de hoja termina justo en "movimiento anterior", la sumatoria del  "VAN" se despalaza una celda a la derecha es decir, las sumatorias deben realizarse tanto en la columna F y G, pero las sumatoria se hacen en la columna  G y H, por lo demas me parece que esta bien y me resulta mas que suficiente,  muchas gracias :)

publicado
Hace 1 hora, Manuel TR dijo:

cuando el corte de hoja termina justo en "movimiento anterior", la sumatoria del  "VAN" se despalaza una celda a la derecha

  1. en el procedimiento "formulasCortesVAN" hay un grupo dentro del "Select ... End Select" el grupo es: Case "saldo anterior:"
  2. el siguiente grupo es: Case "movimiento del mes:", "saldo total:", ""
  3. DOS lineas previas hay una instrucción: => .Offset(, 2).Resize(, 2).Formula = "=sum(" & b & ")" (seguida de un End If)
  4. modifica el primer 2 (dos) por 1 (uno): => .Offset(, 1).Resize(, 2).Formula = "=sum(" & b & ")"

saludos,
hector.

publicado
En 26/12/2018 at 1:01 , Héctor Miguel dijo:

la primera parte es una eventualidad que esperaba no se presentaría :( y tiene otra situación a prevenir/corregir con las fórmulas que ya pusiste en el concepto de "movimiento del mes" en algunos casos (estoy en ello, si no se adelanta algún participante)

la segunda parte va la propuesta en el adjunto (mismo procedimiento: .zip > .bas > etc.)

saludos,
hector.

sinGrupos.zip

Hola Hector,

Disculpa la molestia, lo que pasa es que se me olvido contemplar en "la segunda parte" (que esta bien) que al final de todos los registros (último corte de página) en la columna "H" sin dejar fila en blanco diga "TOTAL" y que sumen tanto la columna " i" y  " j", considerando  la sumatoria que arrastra del corte de página anterior.

https://drive.google.com/file/d/1qdbBGY8ZGIebI5iReIOqczKJjMxlknLt/view?usp=sharing

Gracias.

publicado
En 7/1/2019 at 9:48 , Manuel TR dijo:

que al final de todos los registros (último corte de página) en la columna "H" sin dejar fila en blanco diga "TOTAL" y que sumen tanto la columna " i" y  " j", considerando  la sumatoria que arrastra del corte de página anterior

no entiendo (?)...

quieres que en la última hoja de corte aparezca un "total-total" que considere solo el "vienen" de la última hoja ?, o quieres una sumatoria de todas las cuentas (desde la primer hoja de corte) ?

saludos,
hector.

publicado

Hola Hector, en la última hoja debe sumar el total de todas las cuentas, que vendría a ser la sumatoria del vienen de la última hoja más los registros que están en la última hoja. Adjunto ejemplo https://drive.google.com/file/d/1qdbBGY8ZGIebI5iReIOqczKJjMxlknLt/view?usp=sharing

Gracias. 

publicado
Hace 10 horas, Manuel TR dijo:

la sumatoria del vienen de la última hoja más los registros que están en la última hoja

el enlace al archivo no funciona (igual que el anterior) :(

te refieres al modelo que contiene (sub)divisiones por cuenta ?, o al que tiene todos los registros "de corrido" ?

saludos,
hector.

publicado
Hace 3 horas, Manuel TR dijo:

al que tiene todos los registros de corrido

en el último procedimiento del modulo "sinGrupos" > Private Sub ajustaFormulas()
en el medio de las últimas dos líneas (Next y End Sub)
=> agrega lo siguiente:

  n = WorksheetFunction.Max(Evaluate("transpose(if(" & k & "=""vienen"",row(" & k & ")))"))
  With Range("h" & g + 1)
    .Value = "TOTAL:"
    .Offset(, 1).Resize(, 2).Formula = "=sum(" & Range("i" & n).Address(0, 0) & ":" & Range("i" & g).Address(0, 0) & ")"
  End With

prueba y comentas ?

saludos,
hector.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Vale mil gracias, en vdd se agradece todo el apoyo y comentarios
    • Hola nuevamente. Por eso la importancia de lo que mencionas tú como "ruta relativa". Tal cual comentas, y aún sin llegar a algunos detalles importantes para ayudarte, en realidad tal cual te comenté le día miércoles, pues sí podías hacer como comentabas, era cosa de obtener los Id de Windows (como tú los llamas) y la ruta de OneDrive en casa usuario y eso sí se puede obtener con VBA y luego pasarlo a PQ, pero medio que te cerraste en que "PQ no puede trabajar con rutas relativas", cosa cierta pero siempre hay formas. Si SAP puede o no guardar en OneDrive o SharePoint, pues si está mapeado en la PC ¡claro que se puede! Pero bueno, creo que si te es útil tu propia propuesta ¡avanza con eso!
    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.