Macro para un inventario en excel

Tengo un formato un archivo de excel que contiene 3 hojas sus nombres son NOTA, CLIENTES, PRODUCTOS
es un archivo de facturación en el cual uso la función Buscarv() para buscar los tanto los datos del cliente como los productos que se vallan a facturar en esto no tengo ningún problema todo muy bien, lo que necesito es que cuando facture voy a poner un botón donde diga AFECTAR EL INVENTARIO que cuando le de click aquí valla a la hoja de PRODUCTOS y empiece a comparar los códigos de producto y donde encentre uno igual haga la operación de restar lo que se vendió y poner el nuevo resultado en la celda donde se encuentra el dato de la cantidad existente.
La factura tendrá varios artículos osea que ara varias comparaciones y sus operaciones correspondientes tanto como renovar las celdas de las existencias por producto.
No se si me explique.

1 Respuesta

Respuesta
1
Claro que se puede hacer lo que quieres con una macro, solo que necesitas ser más especifico en cuanto a la estructura que tiene la hoja de PRODUCTOS, es decir, necesito saber cuantas columnas integran esta hoja por ejemplo: "Clave, Descripción, Existencia" ... etc. necesito que seas más especifico para poder ayudarte
Gracias por responder.
Si claro te explico como es la estructura de mi archivo y en si cuales campos son los que están involucrados.
Hoja (NOTA)
Este es la hoja donde se toman los datos del cliente y los artículos que se van a facturar la estructura es la siguiente
Código, cantidad, descripción, precio unitario, importe
A13:A35           B13:B35         C13:C35              D13:D35                      E13:E35
estos son los rangos que abarca cada columna en la hoja de facturacion.
Y existe otra Hoja (PRODUCTOS)
Que en realidad esta es la hoja de donde se toman los productos y también se pretende que aquí mismo se maneje el inventario explico los campos
Id, producto, precio, piezas, total
A2:A230 B2:B230 C2:C230 D2:D230 E2:E230
Estos son los campos y los rangos que abarca cada columna
los campos que yo cre que si involucran entre las dos hojas refiriéndose al inventario seria CÓDIGO, CANTIDAD de la hoja (NOTA) y de la hoja (PRODUCTOS) ID, PIEZAS
Pienso que la macro debe de revisar en la Hoja (NOTA) todos los códigos tecleados y compararlo con los de la Hoja(PRODUCTOS) campo ID y que cuando sean iguales haga la resta dela columna del campo PIEZAS de esta misma hoja con el campo CANTIDAD de la hoja(NOTA) osea
Si CODIGO = ID entonces
RESULTADO=PIEZAS-CANTIDAD
Asignar el nuevo resultado a la celda que contenía el valor que se comparo y pasar al siguiente.
Fin si
Revisar toda la columna de CÓDIGOS y comparar en toda la columna de ID'S hasta llegar al parecido
Y repetir hasta que se terminen todos los códigos de comparación
Pero es algo más complejo por que apenas me estoy iniciando en el código de las macros en Excel.
Espero haberme explicado bien.
Antes que nada te pido una discullpa por apenas contestar pero es que he tenido una semana muy cargada de trabajo y como te imaginarás no me queda tiempo para entrar al foro, pero ahorita que tuve un tiempecito me doy a la tarea de contestar tu pregunta, espero todavía estar a tiempo, creo que sabes algo de macros así que solo copia este código al editor, asignalo a un botón y listo hará exactamente lo que quieres, yo ya lo probé y funciona bien. Aquí tienes el código
Sub control_kardex()
    Application.ScreenUpdating = False
    Sheets("NOTA").Select
    Range("A13").Select 'De acuerdo a tu preguta aqui empieza tu 1er. dato si no es asi solo ajustalo a la fila correcta
    While ActiveCell.Value <> ""
        producto = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        cantidad1 = ActiveCell.Value
        ActiveCell.Offset(0, -1).Select
        Sheets("PRODUCTOS").Select
        Range("A2").Select 'Lo mismo aqui si no coincide ajustalo a tus datos
        While ActiveCell.Value <> producto
              ActiveCell.Offset(1, 0).Select
        Wend
        ActiveCell.Offset(0, 3).Select
        cantidad2 = ActiveCell.Value
        cantidad3 = cantidad2 - cantidad1
        ActiveCell.Value = cantidad3
        Sheets("NOTA").Select
        ActiveCell.Offset(1, 0).Select
    Wend
    Application.ScreenUpdating = True
    MsgBox ("Las existencias del inventario han sido correctamente actualizadas")
End Sub
Muchísimas gracias por el código funciona a la perfección
Aunque ya había implementado otro que estuve tratando de mejorar creo que voy a usar este.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas