Validación al ingresar información a base de datos con 2 condiciones

Para Elsa Matilde:

Cordial saludo;

Tengo una base de datos que se alimenta con una macro utilizando un userform, el archivo que se alimenta contiene una Hoja2 de nombre Datos que contiene información desde la columna A hasta la K, en la columna B se guarda el código de proveedor que en el form se captura en el combobox1, y en la columna D el número de factura que en el form se captura en el textbox1, lo que necesito es validar que en dicha base de datos no exista para un proveedor un mismo número de factura, la idea es que no se permita efectuar un regsitro, si la factura que se está ingreando para determinado proveedor ya existe en la base de datos.

Respuesta
2

En el minuto 4:30 del video 23 de mi canal verás una macro que realiza una búsqueda continua. Es decir que una vez encontrado el proveedor seguirá buscando hasta encontrar (o no) ese nro de factura. El ejemplo se puede descargar desde mi blog.

Trata de adaptar esa macro a tu formulario. Si luego necesita algún ajuste dejala escrita aquí. También aclara en qué momento querrás hacer ese control: ¿Desde el botón de 'guardar'? ¿O al momento de ingresar la factura?

Sdos.

Elsa

Hola Elsa buenas tardes:

He intentado adaptar el código que mencionas en la respuesta, lastimosamente sin exito; en cuanto a su pregunta de que si en el botón de guardado o al momento de ingresar la factura, me encantaría que fuera al ingreso de la factura para que el usuario no pierda tiempo ingresando la información adicional que se solicita en el form.

Agradezco inmensamente su colaboración

Pásame por favor tu hoja y el UF para preparar el código. Mis correos aparecen en imagen que dejo al pie.

Sdos!

Esta sería la macro:

Private Sub TextBox1_AfterUpdate()
'x Elsamatilde
If TextBox1 = "" Then Exit Sub
'verifica si existe esta factura para este proveedor
dato = Val(ComboBox1)
Set hod = Sheets("Datos")
'se inicia la búsqueda en col B de la hoja datos
Set busco = hod.Range("B:B").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
'si no se encuentra ninguna coincidencia continúa el proceso de registro
If busco Is Nothing Then Exit Sub
'guarda la 1er fila encontrada
filx = busco.Row
'inicia un bucle
Do
    'compara la col D con el nro de factura ingresado
    If busco.Offset(0, 2) = Val(TextBox1) Then
        MsgBox "Esta factura ya está registrada"
        'se borra el textbox para forzar a que se ingrese otro nro
        TextBox1 = "": TextBox1.SetFocus
        Exit Sub
    End If
    'repite la búsqueda
    Set busco = hod.Range("B:B").FindNext(busco)
Loop While Not busco Is Nothing And busco.Row <> filx
End Sub

Nota: Revisa la macro Private Sub TextBox6_enter() que da error.

Sdos y no olvides valorar la respuesta.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas