Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

PUNTO de VENTA con Excel DETERMINAR NUMERO Factura en EXCEL VBA #1014

Punto de Venta en Excel - determinar número de factura - autonumerico

Punto de Venta en Excel – Autonumerico para Número de Factura

En este vídeo se muestra como determinar en forma automática el número de factura siguiente, es decir se muestra una macro que genera un autonumerico utilizado para establecer el número de factura siguiente de una factura generada con Excel.

Se el mejor manejando Excel, hazlo en forma fácil y sencilla, 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.

  
 

Mira la macro en acción, una explicación más detallada de su codificación y funcionamiento, recomiendo observar 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.

PUNTO DE VENTA en EXCEL – AUTONUMERAR FACTURAS EN EXCEL

En el ejemplo al presionar el botón con el carro de compras, la marco de Excel genera en forma automática el número de factura siguiente, teniendo en cuenta el tipo de factura y número de sucursal, es decir que la macro debe verificar no solo el número de factura, sino también que tipo de factura se seleccionó y la sucursal.

Para ello se conecta a la base de datos de Access, más precisamente con la tabla donde están guardados los comprobantes y cuenta la cantidad de registros, pero que coincidan con el criterio «tipo de factura» y «sucursal», es decir deberá la macro verificar tres campos para determinar el número siguiente de factura, o dicho de otra manera, generar un autonumerico que establezca cual es la factura siguiente según se ingrese tipo de factura y sucursal.

Explicación del código para autonumerar en Excel 

Código del CommandButton

El código que está en el commandbutton si bien es muy parecido al que se encuentre en los Combobox destinados a ingresar el tipo de comprobante o sucursal, es diferente, porque este código agrega en forma predeterminada el tipo de factura y sucursal y luego determina el número de factura con dependiendo del número de sucursal y tipo de factura preestablecida en en este ejemplo es «Sucursal: 1» y «tipo Factura: A»; en los Combobox los datos son variables dependiendo de lo ingresado en ellos.

En primer lugar se dimensionan las variables a usar con los siguientes códigos:
Dim cn As ADODB.Connection, rs As ADODB.Recordset, sql As String, maxCliente As Long

Luego se crea objetos uno con la conexión y el otro que contendrá los datos recuperados de la base de datos que permanecerán en memoria para ser usados, se usa estos códigos:
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Luego se crea el string de conexión a la base de datos, de la siguiente forma:
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & ThisWorkbook.Path & «\1000 DBTSPuntoVenta.accdb;»

Luego se crea la sql de consulta, con el código siguiente: el mismo se podría traducir, Cuente del campo ID_Fac de la base de datos DB_Clientes Cuando el Tipo de Factura es A y la Sucursal es igual a 1.

sql = «SELECT COUNT (Id_Fac) FROM DB_Clientes WHERE Tipo_Fac = LIKE ‘A’ AND N_Suc = 1»

Ejecuta la string de consulta con el siguiente código:

Set rs = cn.Execute(sql)

Esta consulta nos dará como resultado un solo dato, que es la cuenta de los registros que coinciden con los criterios nombrados en el párrafo anterior, y se guarda en una variable «maxFac», con el siguiente código:
maxFac = rs.Fields(0).Value

Luego asignamos al Textbox donde se debe mostrar en número de factura el valor de la variable + 1, lo que equivale a decir el número de factura siguiente y se asignan a los Textbox los valores predeterminados de tipo de Factura y Sucursal, en este caso «A» y «1» respectivamente, se usa el código siguiente:

UserForm1.TextBox11 = maxFac + 1

UserForm1.ComboBox1 = «A»
UserForm1.ComboBox2 = 1

En el Combobox el código es prácticamente igual con algunas diferencias:

Primero se dimensionan las variables, crean objetos, así:

Dim cn As ADODB.Connection, rs As ADODB.Recordset, sql As String, maxCliente As Long

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Si el Combobox2, que contiene el número de sucursal = Empty o vacío, le asigna automáticamente la sucursal 1, de la siguiente forma:

If UserForm1.ComboBox2 = Empty Then UserForm1.ComboBox2 = 1

Crea la conexión a la base de datos de Access:
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & ThisWorkbook.Path & «\1000 DBTSPuntoVenta.accdb;»

Establece la SQL o string de conexión, si se observa está SQL es distinta a la anterior que es la que está en el Commandbutton, no se establece un nombre o sucursal determinada, sino que depende de lo que ingrese el usuario, es decir del tipo de factura y sucursal ingresada por el operador.

Fíjense que el código en la parte de Where (criterios) es distinto en el primer caso (Command Button) los datos son estáticos y en el segundo depende de lo ingresado por el operador (Combobox):

WHERE Tipo_Fac = LIKE ‘A’ AND N_Suc = 1″

WHERE Tipo_Fac = LIKE ‘» & Me.ComboBox1 & » ‘ AND N_Suc = » & Me.ComboBox2 & » «

El código para determinar la SQL es el siguiente:

sql = «SELECT COUNT (Id_Fac) FROM DB_Fac WHERE Tipo_Fac = LIKE ‘» & Me.ComboBox1 & » ‘ AND N_Suc = » & Me.ComboBox2 & » «

Ejecuta la SQL para obtener el dato que se requiere que es la cantidad de facturaras existentes que cumplan con el criterio de Tipo de Factura ingresado y sucursal ingresada, de la siguiente forma:

Set rs = cn.Execute(sql)

Utiliza el valor determinado y se le suma uno para obtener el número de factura siguiente,  insertando dicho valor en el Textbox, con los siguientes códigos:

maxFac = rs.Fields(0).Value
UserForm1.TextBox11 = maxFac + 1

Descarga el Libro PUNTO DE VENTA EN EXCEL – AUTOMUNERICO FACTURA

Descarga el libro usado en este ejemplo desde el final del post, el mismo es totalmente gratuito y libre su uso, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Código para Generar un Código Consecutivo para una Factura

Código que se ingresa en Combobox en este Ejemplo

Private Sub ComboBox1_Change()
On Error Resume Next
Dim cn As ADODB.Connection, rs As ADODB.Recordset, sql As String, maxCliente As Long
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
UserForm1.ComboBox2 = 1
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & ThisWorkbook.Path & «\1000 DBTSPuntoVenta.accdb;»
sql = «SELECT COUNT (Id_Fac) FROM DB_Fac WHERE Tipo_Fac = LIKE ‘» & Me.ComboBox1 & » ‘ AND N_Suc = » & Me.ComboBox2 & » «
Set rs = cn.Execute(sql)
maxFac = rs.Fields(0).Value
UserForm1.TextBox11 = maxFac + 1
UserForm1.TextBox7.SetFocus
UserForm1.ListBox2.Clear
End Sub

Código que se ingresa en un Botón de Comando

Private Sub CommandButton9_Click()
On Error Resume Next
Dim cn As ADODB.Connection, rs As ADODB.Recordset, sql As String, maxCliente As Long
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 COUNT (Id_Fac) FROM DB_Clientes WHERE Tipo_Fac = LIKE ‘A’ AND N_Suc = 1»
Set rs = cn.Execute(sql)
maxFac = rs.Fields(0).Value
UserForm1.TextBox11 = maxFac + 1
UserForm1.ComboBox1 = «A»
UserForm1.ComboBox2 = 1
UserForm1.TextBox7.SetFocus
UserForm1.ListBox2.Clear
End Sub



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

Summary
Author Rating
1star1star1star1star1star
Aggregate Rating
no rating based on 0 votes