Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

PUNTO de VENTA con EXCEL DETERMINAR Si un Cliente esta REPETIDO #1020

Registros sin suplicados - Punto Venta en Excel

PUNTO DE VENTA EN EXCEL – REGISTROS SIN DUPLICADOS

En este nueva entrega del Sistema de Punto de Venta en Excel, se incorpora una macro que permite determinar si un cliente está duplicado, en dicho caso no deja ingresar registros repetidos o duplicados. Al querer ingresar un cliente nuevo la macro determinará si el Cliente ya está registrado en la base de datos, en dicho caso la macro no permite ingresar datos o registros duplicados.

Maneja Excel como los mejores deberías hacer click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los MEJORES CURSOS ON LINE que he visto en internet, te lo recomiendo no te arrepentirás.

  
Puedes ver la macro en acción y una explicación más detallada de su codificación y funcionamiento, descarga el archivo y mira el video para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil. Te pido que me sigas y comentes en DTube y Odysee para poder seguir publicado macros gratis.

MACRO PARA VERIFICAR SI UN REGISTRO ESTÁ DUPLICADO

En el ejemplo que se puede descargar desde el final del post, se muestra como al tratar de ingresar un cliente nuevo en el Sistema de Punto de Venta en Excel, el sistema lo rechaza y sale un mensaje avisando que el cliente está duplicado o el registra ya existe en la base de datos, esto evita que el usuario siga cargando registros de un cliente que ya está en la base de datos y de esta manera no duplicar datos.

En este caso la macro se ejecuta cuando se actualiza el campo o textbox donde se debe ingresar el Numero de Seguro Social , Rut, Cuit o como se denomine el registro que es único e identifica a cada persona en los diferentes países.

Explicación de la Macro Excel – VBA para INGRESAR DATOS SIN DUPLICAR

La macro al estar conectada con Access que es donde se guarda la Base de Datos, la macro de Excel se debe conectar con dicha base de dato, haciendo referencia al misma, de la siguiente forma:

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & ThisWorkbook.Path & «\1000 DBTSPuntoVenta.accdb;»

Recuerden que en este ejemplo el Libro de Excle y la Base de Datos de Access están en el mismo directorio, por eso con el comando ThisWorkbook.Path se obtiene la dirección del directorio donde está la macro y la base de datos y se le agrega al final en nombe de la base de datos de Access.

Luego se debe realizar o confeccionar la SQL que es la consulta que permite buscar los datos en la base de datos siendo la siguiente:
sql = «SELECT Identificacion_Cliente,Nombre_Cliente FROM DB_Clientes WHERE Ucase(Identificacion_Cliente) =» & Trim(UCase(UserForm1.TextBox31)) & » «

Se ejecuta la SQL con el siguiente código el cual nos buscará los datos que la SQL establece, dichos registros se guarda en el objeto recordset, es decir buscado los datos los guarda en memoria la PC en dicho objeto, se usa el código:

Set rs = cn.Execute(sql)

Posteriormente se establece si el objeto «rs» (recordset) contiene datos, en caso que sea positivo, encontró el dato o Cliente en la Base de Datos por ende el Cliente que se intenta cargar está repetido, emitiendo un mensaje, así:

If rs.EOF = False Then
nom = rs.Fields(1).Value
MsgBox («El Cliente ya se encuetra registrado en la base de datos con el nombre » & nom), vbInformation, «https://macrosenexcel.com»

Si el Cliente ya está en la base de datos, limpia los textbox del formulario para que quede en condiciones de ingresar un nuevo cliente, se usan los siguientes códigos:

UserForm1.TextBox31 = «»
UserForm1.TextBox31.SetFocus

Por último liberar las variables usadas, esto es para que no queden los datos en memoria,  cerrando la conexión de Excel con la base de datos de Access, así:
Set rs = Nothing
cn.Close
Set cn = Nothing

Sale de la macro terminando la misma, al encontrar que el cliente que se intenta ingresar está ingresado en la base de de datos, así:

Exit Sub

Código PARA EVITAR INGRESO DE CLIENTES DUPLICADOS

Código que va en un formulario

Private Sub TextBox31_AfterUpdate()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If TextBox31 <> Empty And AltaCte = 1 Then
Dim cn As ADODB.Connection, rs As ADODB.Recordset
On Error Resume Next
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & ThisWorkbook.Path & «\1000 DBTSPuntoVenta.accdb;»
sql = «SELECT Identificacion_Cliente,Nombre_Cliente FROM DB_Clientes WHERE Ucase(Identificacion_Cliente) =» & Trim(UCase(UserForm1.TextBox31)) & » »
Set rs = cn.Execute(sql)

If rs.EOF = False Then
nom = rs.Fields(1).Value
MsgBox («El Cliente ya se encuetra registrado en la base de datos con el nombre » & nom), vbInformation, «https://macrosenexcel.com»
UserForm1.TextBox31 = «»
UserForm1.TextBox31.SetFocus
Set rs = Nothing
cn.Close
Set cn = Nothing
Exit Sub
End If
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


 

Puedes DESCARGAR el Ejemplo de Punto de Venta con la Modificación para Evitar el Ingreso de Clientes Repetidos

Descarga el fichero usado como ejemplo en este post y en el vídeo explicativo, el mismo es totalmente gratuito y su uso es libre, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
👉⏩ Cuenta Paypal: https://paypal.me/programarexcel

👉⏩ Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd

👉⏩ Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

👉⏩ Cuenta Skrill: marcrodos@yahoo.es

👉⏩ Cuenta Neteller: marcrodos@yahoo.es

👉⏩ Apoya mi trabajo https://www.patreon.com/programarexcel

👉⏩ Sígueme en DTube: https://d.tube/#!/c/programarexcel01

👉⏩ Sígueme en Odysee: https://odysee.com/@programarexcel:3