MACROS para Llenar datos en columnas según criterio de la TABLA DE MOVIMIENTOS

Me encuentro llenando datos en un kardex que presenta información incompleta, después de anlaizar los movimientos con susdistintas opciones hice un cuadro “TABLA DE MOVIMIENTOS”, que sirve para llenar dichas celdas vacías, el problema se hace complejo por lo largo de la descripción, y también por los datos a llenar (SERIE Y NUMERO) para el caso de la opción “T-10”

Como se trata de llenar esa información en el kardex en sus columnas respectivas la búsqueda se inicia en la 1ra fila del kardex que esta en el libro “KX PT ENE 2012”, El 1er dato se encuenta en la celda P3 = “INGRESO POR ANUL PEDIDO+GR+SUNAT”, dicho movimiento lo busco en la TABLA DE MOVIMIENTOS” y procedo a llenar los datos según opciones que me da la citada tabla

Aquí esta las imágenes de como se inicia el kardex:

  • Kardex con las columnas vacías por llenar
  • TABLA DE MOVIMIENTOS que da los pasos a seguir para llenar los datos
  • Kardex llenado de la 1ra fila con la explicación del llenado

Espero tu gran ayuda. Saludos, JOHNMOR41, LIMA PERÚ

1 Respuesta

Respuesta
1

Puedes enviarme tu archivo y me explicas con un ejemplo la secuencia de pasos que debe hacer la macro, procura utilizar datos del archivo para armar tu ejemplo. Utiliza colores e imágenes para armar el ejemplo.

Mi correo [email protected] en el asunto escribe tu nombre "johnmor41"

Hola Dante Amor

LLENADO DE DATOS PARA CASO MOVIMIENTO "INGRESO POR ANUL PEDIDO+GR+SUNAT"

En el libro "KX PT ENE 2012" esta el Kardex que reporta el sistema

Estos son los campos claves

El llenado esta en la imagen adjunta

Te envío el archivo a tu correo con la explicación

Estimado Dante Amor

en resumen es lo que tu dices quiero que la macros vaya a la TABLA MOVIMIENTOS, pero solo realizara el proceso a las filas que cumplan con dos condiciones 

i) que el "tipo de movimiento" que contengan la "columna P del KARDEX "  este en la TABLA MOVIMIENTOS

ii) que el valor de T-12 este "VACIO"

En ese caso procede con la rutina de llenado segun TABLA MOVIMIENTOS como detallo a continuacion: (llenado en KARDEX coloreado de azul)

inicie su proceso con el 1er TIPO DE MOVIMIENTO osea celda "C7" = "INGRESO DE PRODUCCION", busque ese dato en la columna "Tipo de Movimiento (Documento)" que esta en la celda "P36" del KARDEX y comience con el llenado de T-12 (codigo del TIPO DE MOVIMIENTO) celda "D7" de la tabla cuyo valor es "19" y este dato lo rremplace en la celda "Q36" del KARDEX. para el tipo de DOCUMENTO el valor a tomar es la celda "E7" = "71" y se reemplaza en la celda "M36" del KARDEX, para la SERIE se pone el 2do grupo de numeros de la celda "L36" = "GIP-001-0004590" osea en SERIE "N36" = "001" y para el NUMERO se pone el 3er grupo de la celda "L36" osea en NUMERO "O36" = "0004590"

Ahora como esta TABLA MOVIMIENTOS lo hice con el KARDEX ENERO 2012, y lo pueda usar para el KARDEX  de los demas MESES agregue la fila 20 "MOVIMIENTO DIFERENTE" a los declarados hasta la fila 18, procediendo a llenar solo dos datos en T-12 y en T-10 el dato "99"

Por ultimo agregue la fila 21 (que indica el fin de la "MACRO") esto se cumple cuando en el Kardex llegue a una fila donde el dato del "Tipo de Movimiento (Documento)" = "vacio" y el dato de "T-12" tambien es = "vacio"

Te envio NUEVA TABLA MOVIMIENTO, con explicacion de llenado

Saludos, JOHNMOR41, LIMA PERU

Te anexo la macro para el kardex

Sub CompletaKardex()
'Por.Dante Amor
    Set h1 = Sheets("KARDEX")
    Set h2 = Sheets("TABLA MOVIMIENTOS")
    For i = 3 To h1.Range("P" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "Q") = "" Then
            For j = 7 To 20
                If h2.Cells(j, "C") = h1.Cells(i, "P") Then
                    If h2.Cells(j, "H") = "vacio" Then
                        t12 = h2.Cells(j, "D")
                        t10 = h2.Cells(j, "E")
                        Exit For
                    Else
                        If h2.Cells(j, "H") = h1.Cells(i, "R") Then
                            t12 = h2.Cells(j, "D")
                            t10 = h2.Cells(j, "E")
                            Exit For
                        End If
                    End If
                End If
            Next
            h1.Cells(i, "Q") = "'" & t12
            h1.Cells(i, "M") = "'" & t10
            doc = Split(h1.Cells(i, "L"), "-")
            h1.Cells(i, "N") = "'" & doc(1)
            h1.Cells(i, "O") = "'" & doc(2)
        End If
    Next
End Sub

Saludos.Dante Amor

Hola Dante funciona pero parcialmente, he hecho un filtrado de algunos movimientos y el resultado lo anexo en siguiente imagen, están coloreados de azul (según TABLA MOVIMIENTOS), anexo te remito archivo, saludos, JOHNMOR41, LIMA PERÚ

La macro funciona bien

En el primer archivo que enviaste tenías en tu tabla de movimientos la palabra "vacio"

En el archivo que me enviaste tienes un 0, por eso no encuentra el tipo.


Si cambias la información la macro no se ejecutará bien.


Cambia en la macro, esto:

If h2.Cells(j, "H") = "vacio" Then

Por esto:

If h2.Cells(j, "H") = 0 Then


Si vas a cambiar el 0 por algún otro dato, también se tiene que modificar la macro.


Saludos. Dante Amor

¡Gracias! Efectivamente cambie los ceros por la palabra vacío y funciona correctamente, muchas gracias Dante Amor, eres un genio

Saludos, JOHNMOR41, LIMA PERÚ

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas