Macro excel para generar reporte por mes

Estoy construyendo y/o adaptando un aplicativo en excel para control de inventarios, necesito generar un reporte por mes tomando la informacion de la base de datos que previamente se alimenta con los movimientos de entradas, estos movimientos quedan en una hoja de nombre ENTRADAS cuyo numero de hoja es 2, la base de datos contiene los siguentes campos " Codigo, Descripcion del producto, Cantidad, Proveedor, F.Recepcion, Nº Factura del proveedor, Fecha Vcmto y valor, estos datos estan ubicados desde la columna A, hasta la columna H en la fila 1, actualmente genero varios reportes que me funcionan sin problemas, pero necesito generar un reporte de entradas por mes y es donde estoy teniendo dificultades.

El reporte debe contener la siguiente informacion: Codigo, Descripcion del item, cantidad, fecha y valor, la idea es que desde un formulario pueda capturar el mes para el cual se desea generar el reporte, y que dicho informe se genere en un libro nuevo, los meses los debe tomar de la base datos columna fecha, la cual contiene disferentes fechas de diferentes meses incluso diferentes años.

Agradezco inmensamente a quien pueda darme ideas sobre como proceder para la generacion del mencionado reporte.

1 respuesta

Respuesta
1

Tal como lo solicitas, te voy a adelantar la idea y luego vamos puliendo los detalles en nuevas consultas.

Enciende la grabadora de macros. Realiza el filtrado por la col que corresponda (leo que hay 2 con fechas). Selecciona el rango filtrado y copialo en una nueva hoja.

Detene la grabadora y ya tendras la macro básica.

Dejamela escrita aquí y te indicare como modificarla para utilizar un mes variable y el resto de los detalles.

Sdos

Elsa

Hola Elsa matilde muy buen día:

Primero que todo muchas gracias por tu respuesta, anoche estuve cacharriandolo al tema y logré extraer el mes y finalmente poder armar el informe, pero tengo inconveniente con los meses que corresponde a años diferentes, pues el número del mes es el mismo, este es el código que estoy utilizando actualmente, de hecho parte de él lo he tomado del manual que te adquirí hace algunos años atrás y de algunas respuestas que mes has brindado en consultas anteriores.

Tengo un UF mediante el cual selecciono el mes para el cual se desea el reporte

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim NUEVO As Object
Dim i As Integer
Dim L As Integer
Dim j As Integer
Dim VALOR As String
Dim CONTAR As Double
Dim CONTAR1 As Double
'Extraer el mes de la hoja entradas

Hoja2.Visible = xlSheetVisible 'Hoja Entradas
Sheets("ENTRADAS").Select
Dim Mes As String
'ult = Cells(Rows.Count, 1).End(xlUp).Row
ult = Hoja2.Range("A" & Rows.Count).End(xlUp).Row
For Y = 2 To ult
    Mes = Month(Cells(Y, 5)) '5Indica la columna donde esta la fecha
Cells(Y, 9) = Mes '9 indica la columna donde colocara el No. del mes
Next
Set NUEVO = Workbooks.Add
NUEVO.Activate
ORIGEN = ActiveWorkbook.Name
For i = 1 To 30000
'ENTRADAS
If Hoja2.Cells(i, 8) = "" Then 'Columna H Hoja Entradas
final = i - 1
Exit For
End If
Next
VALOR = UserForm14.ComboBox1
' ENTRADAS
CONTAR = 9 '10
' ASIGNAR VALORES PARA EL INFORME
Application.Workbooks(ORIGEN).Worksheets(1).Cells(1, 1) = "INFORME ENTRADAS POR MES"
Application.Workbooks(ORIGEN).Worksheets(1).Cells(3, 2) = VALOR '3 indica No. de Fila y 2 No. columna
For L = 1 To 30000
If Hoja1.Cells(L, 27) = VALOR Then
Application.Workbooks(ORIGEN).Worksheets(1).Cells(4, 2) = Hoja1.Cells(L, 28) 'Descricpion del mes
Exit For
End If
Next
For j = 1 To final   'la varible guardó última fila de hoja Entradas
If Hoja2.Cells(j, 9) = VALOR Then
CONTAR = CONTAR + 1
'Leer la informcion de la hoja entradas
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR, 2) = Hoja2.Cells(j, 6) 'Numero Fra
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR, 3) = Hoja2.Cells(j, 1) 'Codigo Item
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR, 4) = Hoja2.Cells(j, 2) 'Descricpion Item
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR, 5) = Hoja2.Cells(j, 5) 'Fecha Entrada
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR, 6) = Hoja2.Cells(j, 3) 'Cantidad entrada
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR, 7) = Hoja2.Cells(j, 8) 'Cantidad entrada
End If
Next

Veo que colocas el mes de todos tus registros en col 9. Entonces también tendrás que colocar el año en otra col auxiliar en el mismo bucle, supongamos en col 10:

For Y = 2 To ult
    Mes = Month(Cells(Y, 5)) '5Indica la columna donde esta la fecha
Cells(Y, 9) = Mes '9 indica la columna donde colocara el No. del mes
Cells(Y,10) = Year(Cells(Y,5))   'guarda el año en col 10
Next

Luego hay una variable: VALOR = UserForm14.ComboBox1 que supongo que es la que guarda el mes solicitado.  Entonces necesitas ingresar el año solicitado, ya sea desde otro desplegable para años o directamente en un textbox, que para el ejemplo lo llamé Txt_año.

Entonces al recorrer la tabla, en esta parte del código debes evaluar si además del mes también coinciden los años:

For j = 1 To Final   'la varible guardó última fila de hoja Entradas
If Hoja2.Cells(j, 9) = VALOR and Hoja2.Cells(j,10) = Val(Txt_año) Then
CONTAR = CONTAR + 1
'sigue el resto

Excelente como siempre, seguí tu recomendación y al UF mediante el cual solicito el mes, le adicioné un nuevo combobox mediante el cual solicito el año, y listo...

Nuevamente muchas gracias por tu tiempo y por compartir tus conocimientos con los que estamos iniciandonos en este tema.

PD: tu manual me ha sido de mucha utilidad, es excelente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas