Como calcular cuantos productos se ocupan y restan VBA

Tengo un archivo en el cual la columna B es el total de productos que se tienen, pero necesito que al ingresar una cantidad en un textbox de un formulario y darle en el botón calcular, me vaya sumando las filas de la columna A hasta llegar a la cantidad que puse en el formulario y me ponga los utilizados en la columna C y en la columna D me coloque el restante.

Adjunto captura por si no me di a entender.

Tengo el siguiente código pero cuando coloco 250 en el campo del formulario en la columna C únicamente me pone una suma de 200, y si pongo 300 en el campo me pone 240 de suma.

Private Sub CommandButton1_Click()
Dim Fila As Integer
Dim Final As Integer
Dim Total As Integer
Dim b As Integer
Dim R As Integer
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
For Fila = 2 To 1000
        If Hoja1.Cells(Fila, 1) = "" Then
            Final = Fila - 1
            Exit For
        End If
    Next
  For Fila = 2 To Final
      Total = Total + Hoja1.Cells(Fila, 4)
  Next
For Fila = 2 To Final
Hoja1.Cells(Fila, 4) = Hoja1.Cells(Fila, 2)
Next
 b = Me.TextBox1
 If Hoja1.Cells(Fila, 4) = 0 Then
  For Fila = 2 To Final
      If b = 0 Then
      Hoja1.Cells(Fila, 4) = Hoja1.Cells(Fila, 2)
      Exit Sub
      Else
         If b > Hoja1.Cells(Fila, 2) Then
           Hoja1.Cells(Fila, 4) = 0
           Hoja1.Cells(Fila, 3) = Hoja1.Cells(Fila, 2)
           b = b - Hoja1.Cells(Fila + 1, 4)
           Hoja1.Cells(Fila + 1, 4) = b
         Else
           Hoja1.Cells(Fila, 4) = Hoja1.Cells(Fila, 2) - b
           Hoja1.Cells(Fila, 3) = Hoja1.Cells(Fila, 2) - Hoja1.Cells(Fila, 4)
               Exit Sub
             End If
         End If
      Next
    End If
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
 End Sub

1 respuesta

Respuesta
1

Bickttor Fuentes,

Adjunto código que realiza la tarea consultada, según estructura de datos en la imagen que adjuntaste.

Sub CantidadUtilizada()
Set Rango = Range(("B2"), Range("B2").End(xlDown))
suma = 0
For i = 1 To Rango.Rows.Count
suma = suma + Rango.Cells(i, 1)
    If suma <= Me.TextBox1 Then
        Rango.Cells(i, 2) = Rango.Cells(i, 1)
        Rango.Cells(i, 3) = 0
        x = i: sumaif = suma
    Else
        If i = x + 1 Then
            Rango.Cells(i, 2) = Me.TextBox1 - sumaif
            Rango.Cells(i, 3) = Rango.Cells(i, 1) - Rango.Cells(i, 2)
        Else
            Rango.Cells(i, 2) = 0
            Rango.Cells(i, 3) = Rango.Cells(i, 1)
        End If
    End If
Next i
End Sub

Implementarla en tu código que ya tienes trabajado.

Amigo abusando de tu confianza crees que me puedas apoyar a como implementarlo al código que trabajo, ya que al solo utilizar tu código me hace esto :/ 

Bicktor Fuentes,

Adjunto enlace de archivo excel con un ejemplo desarrollado de tu consulta, se agregó la función VAL() en el dato que es ingresado en el TextBox, dado que la macros lo estaba leyendo como texto y deebría leerse como numérico, con ello se soluciona el inconveniente.

Sub CantidadUtilizada()
Set rango = Range(("B2"), Range("B2").End(xlDown))
suma = 0
For i = 1 To rango.Rows.Count
suma = suma + rango.Cells(i, 1)
    If suma <= Val(UserForm1.TextBox1) Then
        rango.Cells(i, 2) = rango.Cells(i, 1)
        rango.Cells(i, 3) = 0
        x = i: sumaif = suma
    Else
        If i = x + 1 Then
            rango.Cells(i, 2) = Val(UserForm1.TextBox1) - sumaif
            rango.Cells(i, 3) = rango.Cells(i, 1) - rango.Cells(i, 2)
        Else
            rango.Cells(i, 2) = 0
            rango.Cells(i, 3) = rango.Cells(i, 1)
        End If
    End If
Next i
End Sub

Espero que sea lo que estes necesitando. Cualquier consulta estaré pendiente.

Calcular cuantos productos se ocupan y restan VBA

 Ander GS amigo, muchas gracias por apoyarme y disculpa la demora, verifique el archivo que me facilitaste y funciona de maravilla, muchas gracias CRACK! 

Solo como complemento, en el código:

suma = suma + rango.Cells(i, 1)

cambie el rango 1 por el 3, para que cuando se haga el proceso me tome los restantes y no los originales. 

Un abrazo desde México. 

Que bueno que se haya solucionado tu inconveniente y puedas seguir con tu proyecto.

Cualquier consulta estaré pendiente.

Amigo buen día, disculpa la molestia nuevamente pero fíjate que me surgió un inconveniente con el archivo que me hiciste favor de proporcionarme. 

Te comento, ahora tengo la necesita de hacer el mismo procedimiento pero con una sola fila, por ejemplo si hay 250 y en el formulario coloco 50, me debería de poner 200 en la columna restantes, lo cual si lo hace pero en la columna Utilizados me pone los 50 utilizados y un montón de ceros y hace que se trabe el Excel por la cantidad de datos. Te adjunto algunas capturas por si no me di a entender muy bien.

Crees que me pudieras apoyar por favor? Te lo agradecería mucho.

Un abrazo. G racias

Bicktor Fuentes,

Adjunto enlace del archivo excel modificado según observación indicada para su revisión.

Espero que te sirva de ayuda. Cualquier consulta estaré pendiente.

Calcular cuanto productos se ocupan y restan VBA Corregido

Por favor, no olvidar la respuesta si te es satisfactoria.

Amigo no se como agradecerte, muchas gracias, al parecer quedo perfecto espero no me surja algún otro problema :v , solo como plus agregue estas líneas ya que en el ejemplo hay 250, se eligen 50, y por ende quedan 200, y si se vuelve a elegir por ejemplo 100 debería de estar en la columna utilizados 150, pero colocaba 100 

            utilizados = rango.Cells(i, 2)
            utilizados2 = utilizados + Val(UserForm1.TextBox1)
            rango.Cells(i, 2) = utilizados2 - sumaif

Gracias nuevamente, un abrazo.! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas