Jump to content
Sign in to follow this  
luismotta13

Van y vienen sumas

Recommended Posts

Que tal amigos del foro, soy todavía un aprendiz de este programa tan grande, mi pregunta es la siguiente:

tengo una lista de datos

de la celda A1 hasta la celda A500

quiero imprimir todos esos datos, pero a la hora de verlo en vista previa me sume lo de la hoja 1 "VAN" que sería en pie de página y que en la hoja 2 "VIENEN" en el encabezado de la página.

No se si alguien pudiera ayudarme, o quizá alguna macro sin necesidad de la vista previa.

Share this post


Link to post
Share on other sites

Quizá sea esto lo que necesitas, abre el editor VBA e inserta un módulo y pega esto:


Sub Prueba()

With ActiveSheet.PageSetup
.CenterHeader = Range("a1").Value 'Encabezado
.CenterFooter = Range("a2").Value 'Pie de página
End With

End Sub
[/Code]

Trae tanto el pié de página cómo el encabezado, sólo pon el que quieras..... cambia el rango por la celda deseada, obvio en ella tendría que ir la sumatoria de lo que quieres aparezca......

Nota: Código facilitado por Mauricio....

Comentas si es lo que necesitas....

Share this post


Link to post
Share on other sites

Carlos Gracias por responder igual Fleming gracias también, y de alguna manera no se podrá unir lo de Carlos Muñiz con lo Fleming, porque es así como me gustaría que funcionara, quizá alguna macro que haga lo que hizo Fleming

Share this post


Link to post
Share on other sites

Lo que hizo Fleming se puede hacer con una fórmula en a1, y luego arrastrarla hasta dónde tengas datos, y que sólo dónde van los cortes de filas aparezca la suma, osea cada 56 filas, si no es así que aparezca "".... dí si te sirve, y la armamos...

Esto evitará el copiar la fórmula sólo en las celdas del corte de hoja.....

Share this post


Link to post
Share on other sites
...quizá alguna macro que haga lo que hizo Fleming...

Hola a todos,

esto parece funcionar... (no sé si sea la forma más eficiente de hacerlo pues es la primera vez que uso .hpagebreaks y no estoy muy familiarizado con su funcionamiento):

Sub prueba()

Dim x As Long
Dim Fin As Long
Dim dir As String
Dim S As Double

Application.ScreenUpdating = False

With ActiveSheet
ActiveWindow.ScrollRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
Fin = .HPageBreaks.Count
For x = 1 To Fin
With .HPageBreaks(x).Location
S = Application.Sum(Range("a1", .Offset(-1)))
.Offset(-1, 3) = "Van: " & S
.Offset(0, 3) = "Vienen: " & S
End With
Application.StatusBar = "Trabajando... " & x & " de " & Fin
Next x
End With

Application.StatusBar = False
Application.ScreenUpdating = True

End Sub[/CODE]

Adjunto el archivo que facilitó nuestro compañero Fleming con la macro.

Copia de VANY VIENEN.zip

Share this post


Link to post
Share on other sites
Hola a todos,

esto parece funcionar... (no sé si sea la forma más eficiente de hacerlo pues es la primera vez que uso .hpagebreaks y no estoy muy familiarizado con su funcionamiento):

Sub prueba()

Dim x As Long
Dim Fin As Long
Dim dir As String
Dim S As Double

Application.ScreenUpdating = False

With ActiveSheet
ActiveWindow.ScrollRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
Fin = .HPageBreaks.Count
For x = 1 To Fin
With .HPageBreaks(x).Location
S = Application.Sum(Range("a1", .Offset(-1)))
.Offset(-1, 3) = "Van: " & S
.Offset(0, 3) = "Vienen: " & S
End With
Application.StatusBar = "Trabajando... " & x & " de " & Fin
Next x
End With

Application.StatusBar = False
Application.ScreenUpdating = True

End Sub[/CODE]

Adjunto el archivo que facilitó nuestro compañero Fleming con la macro.

Gracias mjrofra, me funcionó la macro que realizaste, pero podrías poner las sumas de van y vienen dentro de la lista, por ejemplo

la lista está así:

100.00

125.00

130.01 VAN 355.01

200.00 VIENEN 355.01

100.00

podrías dejarlo como a continuación:

100.00

125.00

130.01

VAN 355.01

VIENEN 355.01

200.00

100.00

Que las sumas van y vienen no queden a la par de la otra cantidad sino dentro la lista, no se si me explico

Share this post


Link to post
Share on other sites

Hola luismotta

adjunto archivo de mas o menos me gustaría que funcionara

parece que esto podría funcionar:

Sub prueba()

Dim x As Long
Dim S As Double
Dim Fin As Long


'Cantidad de filas en cada hoja
Const filas As Long = [COLOR="red"]50[/COLOR]


Application.ScreenUpdating = False


'Para trabajar con una copia de los datos
[COLOR="blue"]Sheets("Hoja1").Copy Sheets(1)[/COLOR]


With ActiveSheet

Fin = .Cells(.Rows.Count, 1).End(xlUp).Row

.ResetAllPageBreaks

For x = filas To Fin + Int(Fin / filas) * 2 Step filas

S = Application.Sum(.Range("a1", .Cells(x - 1, 1)))

.Cells(x, 1).Resize(2).Insert shift:=xlDown

.Cells(x, 1).Resize(2, 2) = Evaluate("{""Van""," & S & ";""Vienen""," & S & "}")

.HPageBreaks.Add Before:=.Cells(x + 1, 1)

Next x

End With


Application.ScreenUpdating = True


End Sub[/CODE]

La constante filas indica el número de filas en cada hoja, en este caso he usado [color=red]50[/color], pero puedes cambiarlo si quieres.

La línea que he puesto en azul:

[color=blue]

[CODE]Sheets("Hoja1").Copy Sheets(1)[/CODE]

[/color]

sirve para crear una copia de la hoja con los datos, en caso de que todo salga terriblemente mal :D. Te recomiendo siempre trabajar con una copia de tus datos a menos que ya estés completamente seguro que la macro funciona a la perfección, en ese caso, podrías borrar esa línea.

Bueno, cualquier inconveniente comentas.

Adjunto el archivo con la macro.

Copia de Copia de VANY VIENEN.zip

Share this post


Link to post
Share on other sites
... cuando le doy vista previa en algunas páginas me queda el van o el vienen a la mitad de la página...

Hola una vez más luis,

de pronto podrías probar cambiando la cantidad de filas por página, usando menos, por ejemplo 40 o 45, según lo que mejor se acomode:

Sub prueba()

Dim x As Long
Dim S As Double
Dim Fin As Long


'Cantidad de filas en cada hoja
Const filas As Long = [COLOR="red"]40[/COLOR]


Application.ScreenUpdating = False


'Para trabajar con una copia de los datos
Sheets("Hoja1").Copy Sheets(1)


With ActiveSheet

Fin = .Cells(.Rows.Count, 1).End(xlUp).Row

.ResetAllPageBreaks

For x = filas To Fin + Int(Fin / filas) * 2 Step filas

S = Application.Sum(.Range("a1", .Cells(x - 1, 1)))

.Cells(x, 1).Resize(2).Insert shift:=xlDown

.Cells(x, 1).Resize(2, 2) = Evaluate("{""Van""," & S & ";""Vienen""," & S & "}")

.HPageBreaks.Add Before:=.Cells(x + 1, 1)

Next x

End With


Application.ScreenUpdating = True


End Sub[/CODE]

Bueno, no sé si esto vaya a solucionar el problema, pero creo que podría funcionar... en todo caso lo mejor si aún hay problemas, es que subas un ejemplo del archivo con el que estás trabajando para poder hacer ahí los ajustas y así dar una respuesta 'acertada'... mientras estaremos intuyendo qué es lo que tienes, haciendo pruebas a ciegas :D.

Share this post


Link to post
Share on other sites

y esta puede ser otra forma distinta de hacerlo.... los saltos de página no se insertarán cada tantas filas sino de manera automática (espero :D) y no habrá problema con filas de distinta altura (espero :D):

Sub prueba()

Dim PB As HPageBreak
Dim S As Double


Application.ScreenUpdating = False


'Para trabajar con una copia de los datos
Sheets("Hoja1").Copy Sheets(1)


ActiveWindow.View = xlPageBreakPreview


For Each PB In ActiveSheet.HPageBreaks

With PB.Location

S = Application.WorksheetFunction.Sum(Range("a1", .Offset(-2)))

.Offset(-1).Resize(2).Insert shift:=xlDown

.Offset(-3).Resize(2, 2) = Evaluate("{""Van""," & S & ";""Vienen""," & S & "}")

End With

Next PB


Application.ScreenUpdating = True


End Sub[/CODE]

adjunto archivo con esta otra opción.

Libro1.zip

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy