Crear una etiquete de texto basado en cambio de fechas

06/06/2007 - 17:43 por Francisco | Informe spam
Hola, Buen dia a todos en el foro:

Mes con mes elaboro un documento en donde enlisto los conceptos de obra de
construccion que se pretenderian facturar en el periodo. Tales conceptos de
obra pudieron haber sido ejecutados en el mismo periodo de facturacion o en
otros periodos pasados que se agrupan y se manifiestan como "Obra ejecutada
en el mes de MMMM de AAAA" en un subtitulo.
La elaboracion del documento la ejecuto mediante una macro, que trabaja
fila por fila, en donde en la columna A pongo el periodo de ejecucion, en la
columna B, el codigo del concepto, en la columna C, la descripcion del
concepto, y asi en otras 7 columna, que no tendrian injerencia para el
problema que pretendo plantear. Se establece una fila en blanco entre
conceptos con una altura de 6.75 puntos
La columna A, no forma parte del documento que se emite, son celdas de valor
con formato de fecha tipo MMM-AA y solo son referenciales para saber en que
periodo estan agrupados los conceptos de obra y poner el subtitulo encima de
la descripcion del primer concepto del periodo en cuestion.
Esta parte la hago a mano, y es aqui donde solicito ayuda para poder
insertar codigo en la macro e inserte el subtitulo cada vez que haya un
cambio de periodo
En este caso, se utiliza la fila en blanco anterior, se expande su altura a
18 pts, se sombrea en gris(25%), fuente en negritas y centrado en la columna.
Apreciare grandemente su ayuda. Espero haber planteado bien el problema.

Saludos

Francisco

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
07/06/2007 - 03:06 | Informe spam
hola, Francisco !

serviria si expones el codigo que ya estas usando para tener una idea mas clara de +/- donde/como se insertaria el codigo que falta
y confirmar si las fechas de la columna 'A' en el documento *fuente* estan ordenadas ?
[y alguno que otro -posible- detalle pendiente, como: se eliminan las filas con los conceptos *reportados* del documento fuente ?]

saludos,
hector.

__ la consulta original __
Mes con mes elaboro un documento en donde enlisto los conceptos de obra de construccion que se pretenderian facturar en el periodo.
Tales conceptos de obra pudieron haber sido ejecutados en el mismo periodo de facturacion o en otros periodos pasados
que se agrupan y se manifiestan como "Obra ejecutada en el mes de MMMM de AAAA" en un subtitulo.
La elaboracion del documento la ejecuto mediante una macro, que trabaja fila por fila en donde
en la columna A pongo el periodo de ejecucion, en la columna B, el codigo del concepto, en la columna C, la descripcion del concepto
y asi en otras 7 columna, que no tendrian injerencia para el problema que pretendo plantear.
Se establece una fila en blanco entre conceptos con una altura de 6.75 puntos
La columna A, no forma parte del documento que se emite, son celdas de valor con formato de fecha tipo MMM-AA
y solo son referenciales para saber en que periodo estan agrupados los conceptos de obra
y poner el subtitulo encima de la descripcion del primer concepto del periodo en cuestion.
Esta parte la hago a mano, y es aqui donde solicito ayuda para poder insertar codigo en la macro
e inserte el subtitulo cada vez que haya un cambio de periodo
En este caso, se utiliza la fila en blanco anterior, se expande su altura a 18 pts, se sombrea en gris(25%)
fuente en negritas y centrado en la columna.
Apreciare grandemente su ayuda. Espero haber planteado bien el problema.
Respuesta Responder a este mensaje
#2 Francisco
08/06/2007 - 20:05 | Informe spam
Hola Hector, perdon por retrasarme en mi respuesta, pero tuve un problema con
mi conexion de internet.

-El documento fuente es una hoja del libro llamada "ResMens" donde esta una
tabla con las sig columnas:

Mes Partida Vol_Obra Importe

- Las fechas estan en orden cronologico, ya que las partidas se agrupan por
periodos de ejecucion

El documento fuente permanece intacto, ya que solo se van copiando los datos

El codigo que utilizo es el sig:


Sub Estim_pesos()
'
' Macro para hacer la estim MN
' basado en el resumen economico mensual
'
' Acceso directo: Ctrl+Mayús+M
'
Dim Ciclos As Variant
Ciclos = Range("A14").Value

Application.ScreenUpdating = False

For i = 1 To Ciclos

Sheets("ResMens").Select 'va a la hoja ResMens
Selection.Copy 'copia la 1ra celda del mes de ejecucion

Sheets("estimación MN (e)").Select
ActiveSheet.Paste 'copia el mes de ejec en la Col A de la
hoja de la estimacion
ActiveCell.Range("A1").Select
With Selection 'formato a la col de "MES"
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

ActiveCell.Offset(0, 1).Range("A1").Select 'mueve el cursor a la Col B
(col de la Partida)
Sheets("ResMens").Select 'se regresa a la hoja ResMens
ActiveCell.Offset(0, 1).Range("A1").Select 'se mueve a la celda de
Partida
Application.CutCopyMode = False
Selection.Copy
Sheets("estimación MN (e)").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False 'copia el num de partida en
la estim

'proceso para determinacion de descripcion, unidad, P.U., vol obra de
contrato
Application.ScreenUpdating = False
Selection.Copy
Application.Goto Reference:="CriterioR"
ActiveCell.Offset(1, 4).Range("A1").Select
ActiveSheet.Paste
Sheets("estimación MN (e)").Select
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Busca1MN,5,FALSE)"
'Descripcion
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],Busca1MN,6,FALSE)" 'Unidad
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],Busca1MN,7,FALSE)" 'P.U.
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],Busca1MN,8,FALSE)" 'Vol
Obra de contrato

'Se regresa a la columna B
ActiveCell.Offset(0, -4).Range("A1").Select

'le da formato a las columnas de partida, descrip, unidad, PU, cantidad
de obra este contrato
With Selection 'formato col "partida"
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.Offset(0, 1).Range("A1").Select 'se mueve a col de
"descripcion"
With Selection 'formato a col de
"descripcion"
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = True
.ReadingOrder = xlContext
.MergeCells = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ActiveCell.Offset(0, 1).Range("A1").Select 'se mueve a la col de
"unidad"
With Selection 'formato a la col de
"unidad"
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.Offset(0, 1).Range("A1").Select 'se mueve a la col de
"PU"
Selection.NumberFormat = "#,##0.00"
ActiveCell.Offset(0, 1).Range("A1").Select 'se mueve a la col
de "Cant de obra este contrato"
Selection.NumberFormat = "#,##0.000"
End With
'Se mueve a la columna de "Cant de obra en esta estimac"
ActiveCell.Offset(0, 1).Range("A1").Select

With Selection 'formato a la celda
.HorizontalAlignment = xlRight
.VerticalAlignment = xlTop
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

'va a la hoja "ResMens" para copiar el volumen de obra
Sheets("ResMens").Select
ActiveCell.Offset(0, 1).Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("estimación MN (e)").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False

'le da formato a la celda de volumen de obra
Selection.NumberFormat = "#,##0.000"

'Calcula el acumulado anterior del volumen de obra en la columna L
ActiveCell.Offset(0, 5).Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUMIF(RCódigo,RC[-10],RP_Cantidad)"
Selection.NumberFormat = "#,##0.000"

'calcula el acumulado anterior del importe en la columna M
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUMIF(RCódigo,RC[-11],RP_Importe)"
Selection.NumberFormat = "#,##0.00"

'Calcula el volumen de obra acumulado hasta esta estimacion
ActiveCell.Offset(0, -4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[3]"
Selection.NumberFormat = "#,##0.000"

'Calcula el importe de esta estimacion
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=ROUND(RC[-3]*RC[-5],2)"
Selection.NumberFormat = "#,##0.00"

'Calcula el importe acumulado
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]+RC[2]"
Selection.NumberFormat = "#,##0.00"

'Retorna a la columna de "concepto"
ActiveCell.Offset(1, -10).Range("A1").Select
Selection.RowHeight = 6.75 'cambia la altura de la fila
a 6.75 pts
ActiveCell.Offset(1, 0).Range("A1").Select 'baja un renglon


'Va a la hoja "ResMens" y acomoda el cursor en la siguiente partida
Sheets("ResMens").Select
ActiveCell.Offset(1, -2).Range("A1").Select
Application.CutCopyMode = False
Sheets("estimación MN (e)").Select

Next i
Application.ScreenUpdating = True
End Sub

La idea que tengo es que cada vez que inicie la rutina en una fila nueva
compare la su fecha con la del renglon que recien termino. Si es diferente,
ir a la columna de la "descripcion ", una fila antes y escribir el texto
"Volumen de obra ejecutado en el mes de XXXXXX de XXXX" Las xxxx serian el
texto basado en el valor de la columna A. Tal fila tendria 18 pts de altura,
fuente negrita y alineación centrada vertical y horizontalmente.
Si es necesario te puedo enviar una seccion de la hoja donde esta el
documento en cuestion.

Gracias por tu atención
"Héctor Miguel" escribió:
PD: Cualquier sugerencia para mejorar lo anterior es bienvenida. Yo
simplemente grabe una macro.

hola, Francisco !

serviria si expones el codigo que ya estas usando para tener una idea mas clara de +/- donde/como se insertaria el codigo que falta
y confirmar si las fechas de la columna 'A' en el documento *fuente* estan ordenadas ?
[y alguno que otro -posible- detalle pendiente, como: se eliminan las filas con los conceptos *reportados* del documento fuente ?]

saludos,
hector.

__ la consulta original __
> Mes con mes elaboro un documento en donde enlisto los conceptos de obra de construccion que se pretenderian facturar en el periodo.
> Tales conceptos de obra pudieron haber sido ejecutados en el mismo periodo de facturacion o en otros periodos pasados
> que se agrupan y se manifiestan como "Obra ejecutada en el mes de MMMM de AAAA" en un subtitulo.
> La elaboracion del documento la ejecuto mediante una macro, que trabaja fila por fila en donde
> en la columna A pongo el periodo de ejecucion, en la columna B, el codigo del concepto, en la columna C, la descripcion del concepto
> y asi en otras 7 columna, que no tendrian injerencia para el problema que pretendo plantear.
> Se establece una fila en blanco entre conceptos con una altura de 6.75 puntos
> La columna A, no forma parte del documento que se emite, son celdas de valor con formato de fecha tipo MMM-AA
> y solo son referenciales para saber en que periodo estan agrupados los conceptos de obra
> y poner el subtitulo encima de la descripcion del primer concepto del periodo en cuestion.
> Esta parte la hago a mano, y es aqui donde solicito ayuda para poder insertar codigo en la macro
> e inserte el subtitulo cada vez que haya un cambio de periodo
> En este caso, se utiliza la fila en blanco anterior, se expande su altura a 18 pts, se sombrea en gris(25%)
> fuente en negritas y centrado en la columna.
> Apreciare grandemente su ayuda. Espero haber planteado bien el problema.



Respuesta Responder a este mensaje
#3 Héctor Miguel
09/06/2007 - 08:12 | Informe spam
hola, Francisco !

-El documento fuente es una hoja del libro llamada "ResMens" donde esta una tabla con las sig columnas:
Mes Partida Vol_Obra Importe
- Las fechas estan en orden cronologico, ya que las partidas se agrupan por periodos de ejecucion
El documento fuente permanece intacto, ya que solo se van copiando los datos
El codigo que utilizo es el sig: [... codigo *omitido* ...] :))
La idea que tengo es que cada vez que inicie la rutina en una fila nueva compare la fecha con la del renglon que recien termino.
Si es diferente, ir a la columna de la "descripcion", una fila antes y escribir... "Volumen de obra ejecutado en el mes de XXXXXX de XXXX"
Las xxxx serian el texto basado en el valor de la columna A.
Tal fila tendria 18 pts de altura, fuente negrita y alineacion centrada vertical y horizontalmente
Si es necesario te puedo enviar una seccion de la hoja donde esta el documento en cuestion.



1) [creo que] si seria necesaria una copia del archivo :D
[solo *dame tiempo* ya que su administracion no esta dentro de mis *dominios*] :))
PERO... asegurate de incluir algunos detalles [sacados de tu codigo] como:
- el nombre/rango/hoja/... [y/o como lo defines] de: -> Application.Goto Reference:="CriterioR"
- el nombre/rango/hoja/... de: -> *Busca1MN*
- los nombres/rangos/hojas/... de: -> *RCódigo" Y... -> *RP_Cantidad*
- que contiene [y en que hoja esta] la celda 'A14' que asignas a la variable: -> Ciclos = Range("A14").Value

2) [probablemente] se podria *agilizar* la ejecucion del codigo, ya que tienes una *danza* [impresionante e innecesaria]...
-> entre hojas/rangos y haces *avances* fila-a-fila / columna-a-columna / aplicas formulas y formatos uno-a-uno / etc. :))

[plis] envialo en .ZIP a la direccion del *remitente* QUITANDO lo que dice: *NO...SPAM...PLS* :D

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida