Macro cortar y pegar datos en otra hoja, dependiendo del criterio de una celda

Estimado @Dante Amor, como hacer para que salga un mensaje "Pedido ya ingresado" al intentar ingresar el pedido dos veces. En este momento el desarrollo me permite ingresar el pedido nuevamente y borrar los datos anteriores (Adjunto código fuente).

Por ultimo, puedes indicarme como hacer para que los pedidos que ya tenga valores en las columnas B, C y D se corte toda la linea y se peguen en otra hoja, al realizar esta acción que siempre se pegue en la ultima fila de los datos copiados, y en la hoja de origen se eliminen las filas vacías.

Te agradezco de antemano por la enseñanza.

Private Sub CommandButton1_Click()
'Dante Amor
'Ingresar datos
    pedido = TextBox1.value
    If pedido = "" Then
        MsgBox "Debes capturar un número de pedido"
        TextBox1.SetFocus
        Exit Sub
    End If
    If IsNumeric(pedido) Then pedido = Val(pedido)
    Set h = Sheets("Report")
    Set r = h.Columns("A")
    Set b = r.Find(pedido, LookAt:=xlWhole)
    If Not b Is Nothing Then
        Celda = b.Address
        Do
            'detalle
            h.Cells(b.Row, "B") = TextBox2.value
            h.Cells(b.Row, "C") = TextBox3.value
            h.Cells(b.Row, "D") = TextBox4.value
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> Celda
        MsgBox "Datos ingresados"
        TextBox1.value = ""
        TextBox2.value = ""
        TextBox3.value = ""
        TextBox4.value = ""
        TextBox1.SetFocus
    Else
        MsgBox "El pedido no existe"
        TextBox1.SetFocus
        TextBox1.value = ""
        TextBox2.value = ""
        TextBox3.value = ""
        TextBox4.value = ""
        TextBox1.SetFocus
    End If
End Sub

1 Respuesta

Respuesta
3

Ya no entendí.

Quieres una macro para ingresar únicamente los datos en las columnas B, C y D, ¿según el número de pedido?

O quieres ingresar un pedido nuevo, ¿en una fila nueva?

Estimado @Dante Amor;

1. Necesito que no permita ingresar un pedido dos veces, y que salga un mensaje "Pedido ingresado".

2. Luego de haber ingresado los datos correspondiente a cada pedido, si hay datos en la columnas B,C o D, se corten todas esas filas y se peguen en otra hoja. Considerando que siempre se peguen después de la ultima fila que tienen datos.

3. Que en la hoja de origen después del cortado de filas se eliminen las filas vacías.

Cualquier consulta o duda, quedo a tu disposición.

Gracias por la paciencia.

Vamos por partes, porque no estoy entendiendo bien qué quieres

Te respondo esto:

1. Necesito que no permita ingresar un pedido dos veces, y que salga un mensaje "Pedido ingresado".

Macro para crear pedidos nuevos.

Private Sub CommandButton1_Click()
'Por Dante Amor
'Crear nuevo pedido
    pedido = TextBox1.Value
    If pedido = "" Then
        MsgBox "Debes capturar un número de pedido"
        TextBox1.SetFocus
        Exit Sub
    End If
    If IsNumeric(pedido) Then pedido = Val(pedido)
    Set h = Sheets("Report")
    Set r = h.Columns("A")
    Set b = r.Find(pedido, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "El pedido ya existe", vbExclamation
    Else
        u = h.Range("A" & Rows.Count).End(xlUp).Row + 1
        h.Cells(u, "A") = pedido
        h.Cells(u, "B") = TextBox2.Value
        h.Cells(u, "C") = TextBox3.Value
        h.Cells(u, "D") = TextBox4.Value
        MsgBox "Pedido creado"
        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox3.Value = ""
        TextBox4.Value = ""
        TextBox1.SetFocus
    End If
End Sub

Revisa esta parte de crear pedidos y dime si es lo que necesitas.

Estimado @Dante, no es lo que necesito. Tratare de ser más explicito. Ingreso el pedido 100 y los datos en la columna B, C y D, hasta ahí todo bien (Ya lo habías resuelto, adjunte el código fuente). Ahora si yo quisiera volver a ingresar el pedido 100, me debería de salir un mensaje "Pedido ya existe con datos en las columnas B, C y D)".

Gracias por la paciencia y las disculpas del caso por la insistencia.

No entiendo, pero haber revisa esto:

Private Sub CommandButton1_Click()
'Dante Amor
'Ingresar datos
    pedido = TextBox1.Value
    If pedido = "" Then
        MsgBox "Debes capturar un número de pedido"
        TextBox1.SetFocus
        Exit Sub
    End If
    If IsNumeric(pedido) Then pedido = Val(pedido)
    Set h = Sheets("Report")
    Set r = h.Columns("A")
    Set b = r.Find(pedido, LookAt:=xlWhole)
    If Not b Is Nothing Then
        Celda = b.Address
        Do
            'detalle
            If h.Cells(b.Row, "B") = "" Then
                h.Cells(b.Row, "B") = TextBox2.Value
                h.Cells(b.Row, "C") = TextBox3.Value
                h.Cells(b.Row, "D") = TextBox4.Value
            Else
                MsgBox "Pedido ya existe"
                Exit Sub
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> Celda
        MsgBox "Datos ingresados"
        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox3.Value = ""
        TextBox4.Value = ""
        TextBox1.SetFocus
    Else
        MsgBox "El pedido no existe"
        TextBox1.SetFocus
        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox3.Value = ""
        TextBox4.Value = ""
        TextBox1.SetFocus
    End If
End Sub

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas