historico - Offset

12/08/2008 - 15:33 por gongi | Informe spam
Hola Grupo !,

Sigo empeñado en conseguir un histórico de mis *facturas*. Lo necesito
como resumen para contabilidad y comprobación de cobros por factura.
Gracias por vuestro código. No obstante, como puedo desglosar los
cobros hacia la izquierda de la tabla (no hacia abajo) , de manera que
tenga un registo *fila* único por factura. ? . Si desgloso hacia abajo
quedan huecos y la hoja pierde operatividad después tratarla (ordenar
por fechas, por nº de factura, etc ).


Sub Historico()
Dim Generales, Cobros, n As Byte, Col As Byte
'Cuando el libro no esta abierto:'
'Dim mlh As Workbook
'Set mlh = Workbooks.Open("historico", ReadOnly:=True)'

'capturar los datos de la plantilla de liquidacion'

With Worksheets("liquidacion")
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .
[b5], .[b56], .[c56], .[d56])
n = Application.Count(.[f54:f62]) 'cuenta el nº de cobros'
Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .
[h54].Resize(n).Value) 'Array dinamico cambia de tamaño segun n'
End With

'volcar los datos en el historico con el libro ya abierto '

With Workbooks("historico").Worksheets("historico")
With .Range("a" & .Range("p" & Rows.Count).End(xlUp).Row) 'halla
el final del rango'
.Offset(1).Resize(, 10) = Generales 'llena la primera fila
hasta la columan 10'
'.Offset(1, 8) = n coloca en contador en la ultima columa '
For Col = 0 To 2 'segun el n de columnas a llenar detalle
de cobros 3 0-1-2'
.Offset(1, 10 + Col).Resize(n) = Cobros(Col)
Next
End With
End With
'mlh.Close
'Set mlh = Nothing '
End Sub

Preguntas similare

Leer las respuestas

#1 gongi
12/08/2008 - 20:59 | Informe spam
On 12 ago, 15:33, gongi wrote:
Hola Grupo !,

Sigo empeñado en conseguir un histórico de mis *facturas*. Lo necesito
como resumen para contabilidad y comprobación de cobros por factura.
Gracias por vuestro código. No obstante, como puedo desglosar los
cobros hacia la izquierda de la tabla (no hacia abajo) , de manera que
tenga un registo *fila* único por factura. ? . Si desgloso hacia abajo
quedan huecos y la hoja pierde operatividad después tratarla (ordenar
por fechas, por nº de factura, etc ).

Sub Historico()
Dim Generales, Cobros, n As Byte, Col As Byte
'Cuando el libro no esta abierto:'
'Dim mlh As Workbook
'Set mlh = Workbooks.Open("historico", ReadOnly:=True)'

'capturar los datos de la plantilla de liquidacion'

With Worksheets("liquidacion")
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .
[b5], .[b56], .[c56], .[d56])
n = Application.Count(.[f54:f62]) 'cuenta el nº de cobros'
Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .
[h54].Resize(n).Value) 'Array dinamico cambia de tamaño segun n'
End With

'volcar los datos en el historico con el libro ya abierto '

With Workbooks("historico").Worksheets("historico")
With .Range("a" & .Range("p" & Rows.Count).End(xlUp).Row) 'halla
el final del rango'
.Offset(1).Resize(, 10) = Generales 'llena la primera fila
hasta la columan 10'
'.Offset(1, 8) = n coloca en contador en la ultima columa '
For Col = 0 To 2 'segun el n de columnas a llenar detalle
de cobros 3 0-1-2'
.Offset(1, 10 + Col).Resize(n) = Cobros(Col)
Next
End With
End With
'mlh.Close
'Set mlh = Nothing '
End Sub



Perdon, claro quiero decir que todos los datos de una misma factura y
los cobros se vuelquen hacia la derecha, llenando columnas sucesivas.
Saludos !
Respuesta Responder a este mensaje
#2 Héctor Miguel
12/08/2008 - 23:34 | Informe spam
hola, domingo !

1) tienes 10 "generales" que andan dispersos por tu hoja "liquidacion"
-> Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .[b5], .[b56], .[c56], .[d56])
y estos datos los pasas en una sola fila (la siguiente libre) a partir de la columna A en el "historico"
-> .Offset(1).Resize(, 10) = Generales

2) exactamente "que" es lo que pasas despues a las 'n' filas como concepto de "Cobros"
a partir de las columnas 8, 9 y 10 de los "generales" ??????
-> Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .[h54].Resize(n).Value)

3) supongo que estos 3 datos (por 'n' filas) es lo que necesitas "mantener en una sola fila"
lo que significa "repetir" los ultimos 3 "generales" para las restantes 'n' MENOS UNA filas de conceptos facturados ?

habras observado que (solo) estoy tratando de armar un panorama, sacando conclusiones de los "detalles" que (NO) expones
asi que... si consideras que algo (de lo que no vemos) pudiera ser de relevante importancia... (considera tambien comentarlo)

saludos,
hector.

__ OP __
Sigo empeñado en conseguir un histórico de mis *facturas*.
Lo necesito como resumen para contabilidad y comprobación de cobros por factura.
... como puedo desglosar los cobros hacia la izquierda de la tabla (no hacia abajo)
de manera que tenga un registo *fila* único por factura. ?
Si desgloso hacia abajo quedan huecos y la hoja pierde operatividad después tratarla
(ordenar por fechas, por nº de factura, etc ).

Sub Historico()
Dim Generales, Cobros, n As Byte, Col As Byte
'Cuando el libro no esta abierto:'
'Dim mlh As Workbook
'Set mlh = Workbooks.Open("historico", ReadOnly:=True)'
'capturar los datos de la plantilla de liquidacion'
With Worksheets("liquidacion")
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .[b5], .[b56], .[c56], .[d56])
n = Application.Count(.[f54:f62]) 'cuenta el nº de cobros'
Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .[h54].Resize(n).Value) 'Array dinamico cambia de tamaño segun n'
End With
'volcar los datos en el historico con el libro ya abierto '
With Workbooks("historico").Worksheets("historico")
With .Range("a" & .Range("p" & Rows.Count).End(xlUp).Row) 'halla el final del rango'
.Offset(1).Resize(, 10) = Generales 'llena la primera fila hasta la columan 10'
'.Offset(1, 8) = n coloca en contador en la ultima columa '
For Col = 0 To 2 'segun el n de columnas a llenar detalle de cobros 3 0-1-2'
.Offset(1, 10 + Col).Resize(n) = Cobros(Col)
Next
End With
End With
'mlh.Close
'Set mlh = Nothing '
End Sub
Respuesta Responder a este mensaje
#3 gongi
13/08/2008 - 10:23 | Informe spam
On 12 ago, 23:34, "Héctor Miguel"
wrote:
hola, domingo !

1) tienes 10 "generales" que andan dispersos por tu hoja "liquidacion"
-> Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .[b5], .[b56], .[c56], .[d56])
y estos datos los pasas en una sola fila (la siguiente libre) a partir de la columna A en el "historico"
-> .Offset(1).Resize(, 10) = Generales

2) exactamente "que" es lo que pasas despues a las 'n' filas como concepto de "Cobros"
a partir de las columnas 8, 9 y 10 de los "generales" ??????
-> Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .[h54].Resize(n).Value)

3) supongo que estos 3 datos (por 'n' filas) es lo que necesitas "mantener en una sola fila"
lo que significa "repetir" los ultimos 3 "generales" para las restantes 'n' MENOS UNA filas de conceptos facturados ?

habras observado que (solo) estoy tratando de armar un panorama, sacando conclusiones de los "detalles" que (NO) expones
asi que... si consideras que algo (de lo que no vemos) pudiera ser de relevante importancia... (considera tambien comentarlo)

saludos,
hector.

__ OP __
Sigo empeñado en conseguir un histórico de mis *facturas*.
Lo necesito como resumen para contabilidad y comprobación de cobros por factura.
... como puedo desglosar los cobros hacia la izquierda de la tabla (no hacia abajo)
de manera que tenga un registo *fila* único por factura. ?
Si desgloso hacia abajo quedan huecos y la hoja pierde operatividad después tratarla
(ordenar por fechas, por nº de factura, etc ).

Sub Historico()
Dim Generales, Cobros, n As Byte, Col As Byte
'Cuando el libro no esta abierto:'
'Dim mlh As Workbook
'Set mlh = Workbooks.Open("historico", ReadOnly:=True)'
'capturar los datos de la plantilla de liquidacion'
With Worksheets("liquidacion")
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .[b5], .[b56], .[c56], .[d56])
n = Application.Count(.[f54:f62]) 'cuenta el nº de cobros'
Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .[h54].Resize(n).Value) 'Array dinamico cambia de tamaño segun n'
End With
'volcar los datos en el historico con el libro ya abierto '
With Workbooks("historico").Worksheets("historico")
With .Range("a" & .Range("p" & Rows.Count).End(xlUp).Row) 'halla el final del rango'
.Offset(1).Resize(, 10) = Generales 'llena la primera fila hasta la columan 10'
'.Offset(1, 8) = n coloca en contador en la ultima columa '
For Col = 0 To 2 'segun el n de columnas a llenar detalle de cobros 3 0-1-2'
.Offset(1, 10 + Col).Resize(n) = Cobros(Col)
Next
End With
End With
'mlh.Close
'Set mlh = Nothing '
End Sub



Hola Hector, !

La Hoja de "historico", se va *armando* así:

nº LIQUID IMPORTE TOTAL CLIENTE BASE IVA IVA TOTAL
DESGLOSE COBROS BANCO COBRADO
LI10999 5.000,00 DIAZ, DOMINGO X 4 0 0 0 1.500,00
BBVA 19/03/2008

1.500,00 BBVA 14/07/2008

500,00 BSCH 16/07/2008

1.500,00 BSCH 15/07/2008
LI11000 2.000,00 GLEZ, MARIA X 2 0 0
0 1.000,00 CIX 31/07/2008

1.000,00 CIX 01/08/2008

Por eso comentaba que luego me resulta mas difícil tratar estos
datos , al ir quedando *huecos*.
Como veras no existen *varios* conceptos de facturación, lo *único*
que desgloso son los cobros para cada liquidación (es información muy
importante para mi).
La idea de seguir en (columnas) hacia la derecha (DESGLOSE COBROS,
BANCO, COBRADO. DESGLOSE COBROS, BANCO, COBRADO ..tantos
como cobros ) y no *hacia abajo* es por esa dificultad que luego
encuentro para tratar el "historico" como una tabla (ordenar por nº de
liquidacion, por fechas , hacer resúmenes...etc).
No se, si tienes alguna idea me comentas, a lo mejor los cobros los
tengo que tener en otra hoja auxiliar referencia al campo *nº
LIQUID* . Gracias por tu inestimable ayuda.
Saludos !
Mingo
Respuesta Responder a este mensaje
#4 Héctor Miguel
14/08/2008 - 04:11 | Informe spam
hola, domingo !

1) como ya comprobaste (al leer tu consulta)... tu "tabla" ha pasado "hecha un desastre" :-((
(por eso es mas recomendable comentar RANGOS, titulos, tipo de datos, hojas, libros, etc.)

2) tratando de (re)acomodar "la tabla"... no pude llegar a los 10 "generales" en los titulos :-((
(supongo que la tabla fue solo en ejemplo "simbolico")

3) si los datos del codigo son mas "cercanos" (a tus datosy arreglo reales), los he tomado como base y...
solo espero que despues no tengas la necesidad de consultar/filtrar/... por "fechas de cobros" -???-

prueba con el siguiente codigo y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Historico()
Dim Generales, n As Byte, Col As Byte
With Worksheets("liquidacion")
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .[b5], .[b56], .[c56], .[d56])
n = Application.Count(.[f54:f62])
End With
With Workbooks("historico").Worksheets("historico")
With .[a65536].End(xlUp)
.Offset(1).Resize(, 10) = Generales
For Col = 0 To n - 1
.Offset(1, 10 + Col * 3).Resize(, 3).Value = _
Worksheets("liquidacion").[f54].Offset(Col).Resize(, 3).Value
Next
End With
End With
End Sub

__ OP __
La Hoja de "historico", se va *armando* así:

nº LIQUID IMPORTE TOTAL CLIENTE BASE IVA IVA TOTAL
DESGLOSE COBROS BANCO COBRADO
LI10999 5.000,00 DIAZ, DOMINGO X 4 0 0 0 1.500,00
BBVA 19/03/2008

1.500,00 BBVA 14/07/2008

500,00 BSCH 16/07/2008

1.500,00 BSCH 15/07/2008
LI11000 2.000,00 GLEZ, MARIA X 2 0 0
0 1.000,00 CIX 31/07/2008

1.000,00 CIX 01/08/2008

Por eso comentaba que luego me resulta mas difícil tratar estos datos , al ir quedando *huecos*.
Como veras no existen *varios* conceptos de facturación, lo *único* que desgloso
son los cobros para cada liquidación (es información muy importante para mi).
La idea de seguir en (columnas) hacia la derecha
(DESGLOSE COBROS, BANCO, COBRADO. DESGLOSE COBROS, BANCO, COBRADO ..tantos como cobros )
y no *hacia abajo* es por esa dificultad que luego encuentro para tratar el "historico" como una tabla
(ordenar por nº de liquidacion, por fechas , hacer resúmenes...etc)...
Respuesta Responder a este mensaje
#5 gongi
17/08/2008 - 13:57 | Informe spam
On 14 ago, 04:11, "Héctor Miguel"
wrote:
hola, domingo !

1) como ya comprobaste (al leer tu consulta)... tu "tabla" ha pasado "hecha un desastre"    :-((
    (por eso es mas recomendable comentar RANGOS, titulos, tipo de datos, hojas, libros, etc.)

2) tratando de (re)acomodar "la tabla"... no pude llegar a los 10 "generales" en los titulos    :-((
    (supongo que la tabla fue solo en ejemplo "simbolico")

3) si los datos del codigo son mas "cercanos" (a tus datosy arreglo reales), los he tomado como base y...
    solo espero que despues no tengas la necesidad de consultar/filtrar/... por "fechas de cobros"    -???-

prueba con el siguiente codigo y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Historico()
  Dim Generales, n As Byte, Col As Byte
  With Worksheets("liquidacion")
    Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .[b5], .[b56], .[c56], .[d56])
    n = Application.Count(.[f54:f62])
  End With
  With Workbooks("historico").Worksheets("historico")
    With .[a65536].End(xlUp)
      .Offset(1).Resize(, 10) = Generales
      For Col = 0 To n - 1
        .Offset(1, 10 + Col * 3).Resize(, 3).Value = _
          Worksheets("liquidacion").[f54].Offset(Col).Resize(, 3).Value
      Next
    End With
  End With
End Sub

__ OP __
La Hoja de "historico", se va  *armando*  así:

nº LIQUID IMPORTE TOTAL CLIENTE     BASE       IVA    IVA TOTAL
DESGLOSE COBROS BANCO COBRADO
LI10999 5.000,00        DIAZ, DOMINGO X 4 0 0 0        1.500,00
                   BBVA      19/03/2008

1.500,00                      BBVA      14/07/2008

500,00                       BSCH      16/07/2008

1.500,00                      BSCH       15/07/2008
LI11000 2.000,00       GLEZ, MARIA  X 2        0       0
0                 1.000,00                         CIX    31/07/2008

1.000,00                        CIX 01/08/2008

Por eso comentaba que luego me resulta mas difícil tratar estos datos , al ir quedando *huecos*.
Como veras no existen *varios* conceptos de facturación, lo *único* que desgloso
son los cobros para cada liquidación (es información muy importante para mi).
La idea de seguir en (columnas) hacia la derecha
(DESGLOSE COBROS, BANCO, COBRADO. DESGLOSE COBROS, BANCO, COBRADO ..tantos como cobros )
y no *hacia abajo*  es por esa dificultad que luego encuentro para tratar el "historico" como una tabla
(ordenar por nº de liquidacion, por fechas , hacer resúmenes...etc)...





Hola Hector,!

Tu código funciona perfectamente . Lo siento,el que no sabe es como el
que no ve :-))) . A ve si voy aprendiendo algo de vosotros. En cuanto
a "Solo espero que despues no tengas la necesidad de consultar/
filtrar/... por "fechas de cobros" . Realmente si tengo esa necesidad
pero prefiero tener la tabla *así* en forma de base de datos y sin
saltos , y luego ya me iré haciendo una macro de consulta con vuestra
ayuda ¿ que te parece ??? .
Muchas gracias por todo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida