Control de stock

Respuesta de
Usuario
Que tal estimado experto en excel fíjate que estoy haciendo un control de inventario en excel pero tengo esta duda quiero que en la celda que me da los datos de exixtencias o stock, quiero que automáticamente me lo pase a otra celda de otra hoja y el problema con el que me enfrento es que cuando le pongo alguna entrada o salida al inventario pues la columna obviamente se va recorriendo hacia abajo, ya que crece mi historial de entradas y salidas, entonces cual función o fórmula debo utiliza para que cuando me de el nuevo valor de stock en la nueva celda que es por ejemplo de F5 a F6, y este nuevo valor que me de se muestre siempre automáticamente en la misma celda de la otra hoja, gracias por tu atención y tu página espero tu respuesta
Avatar
Experto
Esto lo puedes hacer con una macro que se active al activar la hoja de consulta. Para darte los códigos necesito los siguientes datos:

1) Nombre de la Hoja y dirección de la celda donde quieres que se ubique la cantidad de saldo

2) Nombre de la hoja y nombre de la columna en la que se encuentra el dato que necesitas en la hoja anterior.

3) ¿Siempre va a ser la ultima fila la que contenga el valor buscado?

Pásame estos datos y yo te doy los códigos para que excel haga lo que necesitas
Usuario
Que tal estimado experto muchas gracias por tu atención mira la idea es que voy a tener hojas y en cada una voy a poner el historial de cada producto y quiero que el ultimo valor de cada producto me lo de en una hoja especifica es donde voy a tener registrado en una columna todos los productos y en la celda contigua a cada producto es donde quiero tener el ultimo valor de stock ejemplo STOCK



PRODUCTOS

Producto 1 454

Producto 2 352

Producto 3 234

Y exactamente siempre voy a querer que me muestre el ultimo valor de stock.

Ya tengo mi hoja de inventario con fórmulas solo necesito lo que ya mencione la hoja donde me va a dar el valor buscado se llama inventario, columna es F y la hoja donde quiero que me la muestre se llama control de stock y la columna es la C por ejemplo celda C4 va a ser una macro para cada producto pero con un ejemplo claro que tenga yo puedo hacer lo siguiente y si es con fórmulas esta mejor pero si con fórmulas no se puede, con macros esta bien, gracias por tu atención y tu tiempo
Avatar
Experto
Hola, de lo que entiendo esta macro te puede ayudar a que hagas la propia:

Sub Actualiza()
Dim Comprobar, Contador
Comprobar = True: fila = 1 ' Inicializa variables.
Sheets("Control").Select
Do ' Bucle externo.
Do While Contador < 65000 ' Bucle interno.
fila = fila + 1 ' Incrementa el contador.
If Range("A" & fila) <> "" Then ' Si la condición es verdadera.
hoja = Range("A" & fila).Value
Sheets(hoja).Select
k = Range("F" & Cells.Rows.Count).End(xlUp).Row
stock = Range("F" & k).Value
Sheets("Control").Select
Range("B" & fila).Value = stock
Else
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente del bucle externo.
End Sub

Para mi ejemplo el nombre del producto estas desde B1 en adelante, las cantidades las quiero poner alado, es decir, de C1 en adelante.

Los datos del stock están en la columna F, y claro siempre busca la ultima fila llena.

El nombre del producto que está en la columna B, es el mismo texto con el que nombro cada hoja que controla el stock.

Lo tengo para que la corras desde un botón que podrías llamar actualizar, pero tambien la podrías hacer para que corra cada vez que activas la hoja control, eso depende de ti, solo debes cambiar el tipo de macro y colocarla en la hoja que deseas que al activarse se corra, para este caso "Control"

No olvides finalizar la pregunta.
Usuario
Que tal mi estimado experto, en que parte de excel voy a poner todos esos textos que me escribes, yo te agradezco mucho tu paciencia ya que no se mucho de excel y esta configurado en español para ver si puedes mandarme los textos en español por favor gracias mi estimado por tu ayuda realmente se nota que eres una persona que tiene amplios conocimientos de excel.
Avatar
Experto
¿Qué versión de Excel tienes?
Usuario
Que tal te agradezco mucho tu atención y tu tiempo mira en este momento tengo excel 2003 pero pronto cambiaremos a excel 2007
Avatar
Experto
Presiona alt+F11, y te aparecerá una pantalla de visual basic.

Luego vas a insertar y escoges modulo, esto hará que aparezca una pantalla en blanco en la que copiaras los códigos que te pase al inicio:

Sub Actualiza()
Dim Comprobar, Contador
Comprobar = True: fila = 1 ' Inicializa variables.
Sheets("Control").Select
Do ' Bucle externo.
Do While Contador < 65000 ' Bucle interno.
fila = fila + 1 ' Incrementa el contador.
If Range("A" & fila) <> "" Then ' Si la condición es verdadera.
hoja = Range("A" & fila).Value
Sheets(hoja).Select
k = Range("F" & Cells.Rows.Count).End(xlUp).Row
stock = Range("F" & k).Value
Sheets("Control").Select
Range("B" & fila).Value = stock
Else
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente del bucle externo.
End Sub

Prueba y me avisas
Usuario
Hola que tal mi estimado experto ya hice lo que me dijiste y la macro lo que hace solamente al ejecutarla me manda a la hoja de control pero no me manda ningún valor solo ma transporta a la hoja de control sin valores entonces no se que más haga falta mira lo que quiero es ejemplo:

Hoja 1 (producto a) hoja 2 (producto b) hoa 3 de control(control)

Producto a 54 producto b 76 producto a 54

Producto b 76

Entonces lo que quiero es que al meter yo algunvalor entrada o salida en las hojas de productos quiero que me actualica en la hoja de control busando el ultimo valor del stock o sea la ultima celda gracias por tu tiempo.
Avatar
Experto
¿Desde qué fila en la hoja de Control tienes datos?

¿No te genero ningún error al actualizar?
Usuario
Que tal como siempre te sigo agradeciendo tu tiempo, mira sencillo, lo que tengo en la columna F de la hoja de cada articulo claro siempre y cuando busque el ultimo valor me lo transporte automáticamente a una celda en especifico de la hoja de control en la columna C por decir en la celda C3 siempre que haya un valor nuevo de la columna F, gracias mi estimado por tu tiempo.
Avatar
Experto
A ver te explico lo que entiendo:

Estas en la hoja que se llama "ProductoA" e ingresas un valor en la columna F(en esta columna tienes el stock, y por tanto la ultima fila llena de esta columna tiene el stock actual), quieres que la macro busque ese "ProductoA" en la columna "A" de la Hoja de control y cuando encuentre la coincidencia coloque en la parte de derecha el ultimo valor registrado anteriormente.

Ojo que la hoja donde tienes el kardex se llama "ProductoA" no "Hoja1". DIme si lo expuesto es correcto.
Usuario
Es correcto mi estimado muchas gracias por tiempo
Avatar
Experto
Hola debes ir a el modulo de la hoja de cálculo de cada producto y pegar este código.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column = 6 Then
fila = ActiveCell.Row - 1
valor = Range("F" & fila).Value
Producto = ActiveSheet.Name
Sheets("Resumen").Select
Sheets("Resumen").Range("A:A").Select
Selection.Find(What:=Producto, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
fila2 = ActiveCell.Row
Sheets("Resumen").Range("B" & fila2).Value = valor
Sheets(Producto).Select
End If
End Sub
 

Luego solo deberás actualizar tus datos y cada vez que lo hagas se correrá una macro de amenra automática, actualizando tu hoja "Resumen"

Saludos y cualquier duda me avisas.
Usuario
Que tal mi estimado experto fíjate que al pegar el código en el modulo de visual basic me lo pega pero no me indica ninguna macro haz de cuenta como si no pegara nada, no se que le pueda hacer falta, en la parte donde se le pone el nombre a la macro no me indica nada, o sea que no la puedo ejecutar, gracias por tu tiempo.
Avatar
Experto
Primero, este código lo debes pegar en el vba de la hoja de calculo no en un modulo, es decir, vas a vba y das doble click sobre el nombre de la hoja que te aparece en un recuadro de la parte izquierda, se abrirá una ventana y es ahí donde lo debes pegar, para tu caso en ProductoA.

Segundo este código es autoejecutable, por lo que no lo puedes ejecutar como una macro normal, este código se correrá automáticamente por cada cambio en la columna F de ProductoA
Usuario
Que tal mi estimado ya hice lo que me dijiste y me dice que hay un error de compilación, se he detectado un nombre ambiguo worksheets change y error 91 gracias por tu tiempo
Avatar
Experto
La verdad yo probé la macro y funciona, por eso te decía como funcionaba en mi caso, ¿pregunto? ¿En tu libro la hoja en la que busca y pega los valores se llama resumen? ¿Y segundo ProductoA es ubicada dentro de esa lista? Es decir si manualmente yo voy a la hoja Resumen Selecciono toda la columna A, presiono ctrl+b y coloco la palabra ProductoA, ¿este buscador va a encontrar esa palabra dentro de la lista?
Usuario
Si mira en mi hoja resumen tengo en la columna A una lista de todos los artículos de mi inventario, por ejemplo cuando yo meto alguna entrada o salida en la hoja del articulo quiero que me mande la existencia automáticamente del articulo ProductoA que lo tengo en la celda 2A y que me lo mende en la celda de al lado que esta en la celda 2B de mi hoja resumen. Y así sucesivamente si yo meto alguna salida del articulo que sea me la mande automáticamente a la celda de al lado del articulo correspondiente.

Yo te agradezco tu gran voluntad y empeño para ayudarme gracias mi estimado
Avatar
Experto
Pues lo siento, ya no se me ocurre que más puede fallar, como te decía yo probé la macro y funciona.