MACRO 2 menu "Agregar Lineas" y menu "Consulta Sensitiva por Linea"

Dante Amor, esta pregunta es continuacion de MACRO 1 actualice Linea de Producion MACRO 2 agregar y consultar Linea de Produccion en Kardex Mensual. Paso a describir lo que quiero que se programe:

Paso 1.- MENU PRINCIPAL, al teclear "ALT+Z", se presentara el MENU PRINCIPAL como vemos en la imagen

Paso 2.- MACRO 1 "Actualizar Lineas", al ejecutar esta macro quedo en el KARDEX varias filas con la palabra "SIN LINEA", es decir que dichos codigos aun no tienen Linea de Produccion asignada, tendremos que ejecutar la MACRO 2.

Paso 3. MACRO 2. Menu "Agregar Lineas", para poder ejecutar la MACRO 2, llamamos al MENU PRINCIPAL (ALT+Z) y alli le damos clic al boton "MACRO 2" presentandose el menu "AGREGAR LINEAS", como vemos en la imagen. Cabe recalcar que las Lineas de Produccion por cada producto o codigo se encuentran en el libro "BD Lineas de Prod" del archivo "LINEAS DE PRODUCCION.xls".

Paso 4. Menu "CONSULTA SENSITIVA POR LINEA".- Esta consulta la realizo en el caso yo desconozca a que linea pertenezca el producto que tengo que asignar, dando clip a la opcion "CONSULTA", como se ve en la imagen. Cabe recalcar que los datos que aparecen en este menu de CONSULTA estan en el libro "Listas Lineas" del archivo "LISTAS DE PRODUCCION.xls"

Paso 5. USO DEL MENU CONSULTA.- Para esto digitamos la palabra que identifique el producto, en nuestro caso digitamos "SUPER", ante lo cual el menu CONSULTA nos muestra todas los productos que tienen dicha palabra y vemos que el producto pertenece a la "LINEA 3 P.ESPECIAL" como vemos en la siguiente imagen

Paso 6. Asignacion de lina de produccion. Cerramos la CONSULTA y en el MENU AGREGAR LINEA escojemos la LINEA a la que pertenece el producto, en este caso la opcion es "LINEA 3 P. ESPECIAL", esta palabra debe llenarse desde la fila 3 a la 6 ya que pertenen al mismo producto es decir al codigo "PT0000003260".

Paso 7. Busqueda negativa en el menu de consulta. Supongamos que al haber hecho la consulta digitando la palabra "SUPER", no existe alternativa que coincida con la descripcion del producto, cerramos la CONSULTA. Y en el menu "AGREGAR LINEA" escojemos la opcion "PREGUNTAR"

Paso 8. OPCION "PREGUNTAR" al dar clic a esta opcion se llenara desde la fila 3 a la fila 6, ya que pertenen al mismo codigo "PT0000003260".

Paso 9. La MACRO 2, continua su BUSQUEDA y ubica el segundo codigo que tenia la palabra "SIN LINEA", y se repiten los pasos anteriores.

1 respuesta

Respuesta
2

Puedes enviar la última versión de tu archivo para trabajar con ella.

Recuerda poner tu nombre de usuario en el asunto del correo

Hola Dante Amor, te acabo de enviar el correo, por favor recuerda que el archivo plantilla es donde funciona la MACRO 2. Y para esto usa los libros "BD Líneas de Prod" y "Listas Líneas" que están dentro del archivo PLANTILLA.xls.

Lo que yo necesito es que ese archivo ya no funcione, sino que yo genere el KARDEX MENSUAL y desde allí llame al MENU GENERAL, para utilizar las MACRO 1 y MACRO 2

Utilizando para jalar los datos el archivo LÍNEAS DE PRODUCCIÓN.xls que contiene los libros "BD Líneas de Prod" y "Listas Líneas", en otras palabras el archivo LÍNEAS DE PRODUCCIÓN.xls es el que se va ir actualizando y servirá como base de datos de consulta, para ir agregando al KARDEX MENSUAL que es donde se deben ejecutar ambas MACROS.

Saludos, JOHNMOR41

Te anexo la macro para el botón que llamas "INGRESAR DATOS" que tienes en el userform1.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    codigo = TextBox1
    Set h = ActiveSheet
    Set r = h.Columns("C")
    Set b = r.Find(codigo, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            h.Cells(b.Row, "F") = TextBox4
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    buscarsiguiente
End Sub

El código anterior llama al siguiente procedimiento:

Sub buscarsiguiente()
    For i = 3 To Range("F" & Rows.Count).End(xlUp).Row
        If UCase(Cells(i, "F")) = "SIN LINEA" Then
            Cells(i, "C").Select
            Me.TextBox1 = Cells(ActiveCell.Row, "C")
            Me.TextBox2 = Cells(ActiveCell.Row, "E")
            Me.TextBox3 = Cells(ActiveCell.Row, "D")
            Exit Sub
        End If
    Next
    MsgBox "Ya no existen códigos SIN LINEA", vbExclamation
End Sub

Saludos.Dante Amor

Hola Dante Amor, el problema persiste ya que no quiero utilizar el archivo de la MACRO 2 como plantilla, al decir plantilla me refiero a lo siguiente:

USO ACTUAL DE LA PLANTILLA DONDE FUNCIONA LA MACRO 2

paso 1.- Del sistema de almacen genero el KARDEX MENSUAL y lo bajo en EXCEL. por ejemplo KARDEX del mes de enero 2014, el cual llamare KX012014.xls.

paso 2.- Ya obtenido este Kardex en excel dicha hoja la copio y la pego en la plantilla que llamaremos PLANTILLA012014.xls

paso 3.- Ejecuto MACRO 1, para poner linea de produccion a los productos que ya tienen asignada su respectiva linea (esta acumulacion de lineas a los productos se hace a travez de la MACRO 2, cada vez que yo asigno una linea de produccion a un producto que no esta en el libro "BD Lineas de Prod" ya que este libro va acumulando todos los codigos o productos que se le van agregando LINEA a traves de la MACRO 2 (lo que no esta haciendo la MACRO 2, por favor corrige esta omision)

paso 4.- Ejecuto MACRO 2, asignando Lineas, con previa CONSULTA si fuera necesario, si no tengo a que linea pertenece escojo la opcion "PREGUNTAR" y al igual que al asignar Linea igual este producto debe añadirse al ""BD Lineas de Prod", que en realidad viene a ser una base de datos que contiene productos con sus respectivas lineas conforme vaya trabajando los KARDEX MENSUALES.

EL PROBLEMA Y SOLUCION

Como vez, la solucion que tu me has dado es la misma que ya tenia y no resuelve el fondo del problema, que se debe solucionar trabajandose con 2 archivos, osea en forma separada.

un archivo para el KARDEX MENSUAL (que debe contener ambas MACROS) 

y otro archibo que se llamara "LISTAS DE PRODUCCION.xls", el cual contendra la base de datos de los productos con sus lineas osea el libro "BD Lineas de Prod". Dicho Libro tiene dos finalidades, 1ra finalidad, sirve para actualizar las Lineas de Produccion mediante la MACRO 1 y 2da finalidad, sirve para ir añadiendo productos y Lineas de Produccion, cada vez que se asigne una linea mediante la MACRO 2.

El 2do libro "Listas Lineas" que tambien debera estar en el archivo "LINEAS DE PRODUCCION.xls" sirve para poder utilizar el menu CONSULTA SENSITIVA DE LINEAS".

Al organizar de esta manera el trabajo de ASIGNAR LINEAS EN LOS KARDEX MENSUALES, logro hacer mas rapido el trabajo ya que no tengo que estar pasando a una plantilla el KARDEX y por otra parte tengo un solo archivo "LINEAS DE PRODUCCION.xls" que contiene toda la data para actualizada ya que mes a mes se van agregando nuevos productos con Lineas de Produccion añadidas al ejecutar la MACRO 2.

Espero puedas hacer esta modificacion, con esto lograre un trabajo mas sencillo y eficaz, saludos, JOHNMOR41

Disculpa pero no te entiendo

Dices que trabaje en estos archivos, pero no me los envaiste.

KX012014.xls.
PLANTILLA012014.xls

Lo que me enviaste fue esto:

Plantilla linea de productos mar 2014 dam sin linea con menu general
LINEAS DE PRODUCCION

Dante si te envíe los dos archivos empaquetados como M1-2 LÍNEAS.rar, este contiene los siguiente archivos

1RO.- PLANTILLA LÍNEA DE PRODUCTOS MAR 2014 DAM SIN LÍNEA CON MENU GENERAL.xls, que es la famosa plantilla que contiene la MACRO 2 y que esta compuesta de la siguiente manera.

1er Libro "KARDEX" que contiene una copia del KARDEX MENSUAL generado del sistema de almacen.

2do Libro "BD Líneas de Prod"

3er libro "Listas Líneas".

Este archivo en realidad solo debe contener el 1er libro "KARDEX" osea que el 2do y 3er libro deben ser eliminados, pero si yo hacia eso no ibas a poder ejecutar la MACRO 2, que en la plantilla tiene el nombre "LlamarLinea".

2DO.- "LÍNEAS DE PRODUCCIÓN.xls", que contiene 2 libros.

1er libro "BD Líneas de Prod"

2do libro "Listas Líneas", que por el apuro no le cambie de nombre y esta como "Hoja 1".

Dante Amor, te volveré a enviar el empaquetado, pero ahora de esta manera para que no haya confusión

1er archivo "KARDEX MENSUAL.xls", que contendrá solo un libro "KARDEX"

2do archivo "LÍNEAS DE PRODUCCIÓN.xls", que contiene 2 libros.

Libro 1.- "BD Líneas de Prod"

Libro 2.- "Listas Líneas

Disculpa que no haya sido muy claro en el anterior envío, saludos, JOHNMOR41

Vamos a aclarar un poco

Los que terminan en ".xls" son libros

Las pestañas que tiene un libro son hojas.

Entonces si haces referencia a una pestaña, tienes que hacer referencia a una hoja

Si tienes razón, un archivo de excel es un libro, y las pestañas son las hojas del libro, es un buen símil eso de comparar un archivo de excel con un libro por la cuestión de las hojas, entonces queda claro que cuando puse que el archivo tiene libros me refería a que tenia pestañas, gracias por la aclaración, saludos, JOHNMOR41

Vamos a empezar de cero. Podrías responder mis dudas en este orden:

1. Tengo 2 libros, ¿cuál libro abro primero?

2. ¿En qué libro quieres las macros?

3. ¿La macro1 ya funciona con los 2 libros?

4. Para la macro2, ¿cuál dato es el que se relaciona con los dos libros?, Solamente dime cuál dato, ¿en qué celda está en el libro1 y en qué celda está en el libro2 y en cuál hoja?

Ya quedaron las macros funcionando con los 2 libros.

Te anexo el código del formulario2:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    For c = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(c) = True Then
            UserForm1.TextBox4 = Me.ListBox1.List(c, 1)
            UserForm1.TextBox5 = Me.ListBox1.List(c, 2)
            UserForm1.TextBox6 = Me.ListBox1.List(c, 0)
        End If
    Next
    Me.Hide
End Sub
Private Sub TextBox1_Change()
'Act.Por.Dante Amor
    If Me.TextBox1 = "" Then
        cargalist
    Else
        For X = 0 To Me.ListBox1.ListCount - 1
            NombreMP = Me.ListBox1.List(0, 0)
            NombreMP1 = Me.ListBox1.List(0, 1)
            NombreMP2 = Me.ListBox1.List(0, 2)
            If LCase(NombreMP) Like CStr("*" & LCase(Me.TextBox1.Text) & "*") Then
                Me.ListBox1.AddItem NombreMP, Me.ListBox1.ListCount
                Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = NombreMP1
                Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = NombreMP2
            End If
            Me.ListBox1.RemoveItem (0)
        Next
    End If
End Sub
Private Sub UserForm_Activate()
'act.Por.Dante Amor
    cargalist
    Me.TextBox1.SetFocus
    Me.TextBox1 = ""
End Sub
'
Sub cargalist()
'Por.Dante Amor
    ListBox1.Clear
    Set l2 = Workbooks("LINEAS DE PRODUCCION.XLS")
    Set h2 = l2.Sheets("Listas Lineas")
    u = h2.Range("B" & Rows.Count).End(xlUp).Row
    For i = 3 To u
        Me.ListBox1.AddItem h2.Cells(i, "E")
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = h2.Cells(i, "B")
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = h2.Cells(i, "C")
    Next
End Sub

Para que funcione, debes tener los 2 libros abiertos

Las dos MACROS tienen que funcionar en el KARDEX MENSUAL.

El archivo "LÍNEAS DE PRODUCCIÓN.xls", es un archivo que funciona como base de datos, tanto para la MACRO 1 y para la MACRO 2, cabe recordar que cada vez que se agregue una línea nueva mediante la MACRO 2, en la pestaña "BD Líneas de Prod" se ira incrementado dicho producto y su línea de producción respectiva

Saludos, JOHNMOR41

Eso ya quedó.

Las macros ya funcionan con los 2 libros.

Las siguientes peticiones deberás hacerlas con una pregunta nueva.

Recuerda valorar esta pregunta.

Hola Dante Amor, en los últimos archivos que me enviaste imagen a continuación

Del martes 4 a las 6.24 pm, solo contiene un macro "InsertarLinea".

Para probar esta macro, en el archivo "LÍNEAS DE PRODUCCIÓN.xls" elimine el 1er código osea "PT0000003260", ejecute dicha macro, obteniendo el resultado correcto, osea para dicho código se puso la palabra "SIN LÍNEA". Para los demás códigos puso sus líneas correspondientes.

Para ejecutar la "MACRO 2", copie en la pestaña "KARDEX" del archivo "KARDEX MENSUAL.xls" el ultimo código que haz puesto, al ejecutarlo dando clic en "Hoja1.cargaList" pero me sale este error

Por favor como se usa la MACRO 2

Saludos, JOHNMOR41

Te envié el archivo dam2, tienes que probar en el archivo dam2.

Ya va incluido el código para insertar el registro en la hoja "BD Lineas de Prod"

Si tienes problemas, dime exactamente qué pasos estás haciendo para que yo pueda reproducir el error y enviarte la corrección.

Te envié el archivo dam3.

La macro2 la tienes que ejecutar desde el formulario, no ejecutes la macro "cargalist"

Te puse dos botones en la hoja kardex, "Macro1" y "Macro2"

Acabo de recibir el archivo KARDEX dam3 y funciona correctamente, es ud un MAESTRO, solo una consulta final, como tu sabes que yo no quiero utilizar el archivo KARDEX MENSUAL.xls" como una plantilla, sino lo que quiero hacer es generar el KARDEX MENSUAL 01.xls y dicho kardex insertar los códigos para que funcionen las MACROS, he allí el PROBLEMA (este proceso de insertar códigos lo haré para todos los KARDEX MENSUALES que siguen).

El botón para la MACRO 1 y su asiganacion al código "InsertarLinea" si lo puedo hacer (osea copiar la MACRO1 y crear su botón lo podre hacer en cada KARDEX MENSUAL que voy a generar)

Lo que no puedo hacer es agregar la MACRO 2 (solo se crear el botoncito pero como asignarlo lo ignoro)

En las MACROS que aparecen el "KARDEX dam3.xls", aparecen las MACROS heredadas osea la MACRO "LlamarLinea" (la antigua macro2) y otra MACRO "cambiarFormatos" que no se para que sirven, son necesarios esas dos MACROS para que funcionen las MACROS 1 y MACROS 2 que tu has programado.

Por favor explícame como debo agregar la MACRO 2 a los nuevos KARDEX MENSUALES que voy a generar y trabajar asignando las Líneas de Producción.

Saludos, JOHNMOR41

Te recomiendo que en el archivo dam3 en la hoja "KARDEX" pongas la información del mes 1, y guardes el archivo como: "Kardex mensual 1". De esa forma no tienes que estar pasando las macros de una archivo a otro. En el dam3, deberás realizar las actualizaciones a la macro, de esta forma siempre tendrás la versión actualizada en un solo libro.

Las macros que funcionan son las del módulo2, las macros del módulo1 no son utilizadas en la macro1 ni en la macro2.

Lo probé como has indicado funciona a la perfección, solo te pido una ultima mejora, cuando se ejecuta la MACRO2, buscando el siguiente código que se encuentra "SIN LÍNEA" podrías que esa celda que contiene el código se coloree de amarillo.

Muchas gracias, estoy muy contento con el funcionamiento de tus MACROS, saludos, JOHNMOR41

Con todo gusto le sigo haciendo las adecuaciones que necesites, te pido de favor que crees una pregunta nueva por cada petición.

También podrías crear la pregunta que indica: crear una nueva línea en la hoja "BD Lineas de Prod".

Recuerda poner en el texto de la pregunta que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas