............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

USERFORM PARA REGISTRAR ESTATUS DE FACTURAS

Ver el tema anterior Ver el tema siguiente Ir abajo

USERFORM PARA REGISTRAR ESTATUS DE FACTURAS

Mensaje por prayer el Lun Jul 17, 2017 1:57 am

Buenas noches a todos, recurro a ustedes nuevamente con la esperanza de que me ayuden con un nuevo proyecto,
Estoy creando un Userform, que tiene como finalidad registrar facturas en una base de datos...
Investigando, he dado con algunos códigos, pero como siempre, no me funcionan...

Quisiera que desde ese Userform, como ya lo explique, se puedan registrar las distintas facturas del dia, y que a través del "numero de factura" se puedan buscar y modificar directamente desde ese userform.





"registre una factura de forma manual" para que vean lo que lleva una factura a la hora de registrarla en la base de datos.




Ya he adelantado algo, (no es mucho)

Agradecería mucho a quien me pueda ayudar con esto.
Adjunto el Libro excel en cuestion:
CUENTAS POR COBRAR
avatar
prayer

Masculino Cantidad de envíos : 10
Edad : 22
Ciudad - Pais : Venezuela
Version de Excel : 2016
Fecha de inscripción : 02/07/2017

Volver arriba Ir abajo

Re: USERFORM PARA REGISTRAR ESTATUS DE FACTURAS

Mensaje por moises melgar el Lun Jul 17, 2017 5:35 pm

descargado
cuando encuentre en que parte del código marca error, comentare como se solucionan y subiré el ejemplo

voy a examinarlo en mi casa ya que aun ando trabajando
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 547
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: USERFORM PARA REGISTRAR ESTATUS DE FACTURAS

Mensaje por moises melgar el Mar Jul 18, 2017 12:25 am

Estabas cerca pero con mas practica te saldran los codigos
en el codigo de BUSCAR_FACTURA_Click
eliminar :        
If "Hoja1" Then <-----no es necesario ya que no se evalua alguna condicion que resulte verdadero o falso
en el codigo "fila", es el numero de la fila donde se ecnuentra el dato buscado, con el codigo que usa .find se busca ese dato, si no encuentra el dato Fila aparece como error (controlado con on error resume next) y fila se queda con el valor de ""(nada)
y si fila es Igual a nada, entonces no se escontro el dato ( no existe) y exit sub sale de la macro

ahora si se logro encontrar la fila con el dato buscado Fila es la fila donde se encuentra
por lo que envez de moverme por la hoja de excel
NUMERO_DE_FACTURA.Value = Range(ubica).Offset(0, 0).Value
es mejor agregar el dato directamente (ya que sabes la fila y que columna le toca a cada uno) cells(numfila,numcolumna)
NUMERO_DE_FACTURA = Sheets(1).Cells(fila, 1).Value

Código:
Private Sub BUSCAR_FACTURA_Click()
Dim codigo, fila
codigo = NUMERO_DE_FACTURA
fila = ""
CUADRO_CLIENTE = "" 'NOMBRE DE CLIENTE
FECHA_DE_EMISION = "" 'FECHA EN QUE SE REALIZO LA FACTURA
DIAS_DE_CREDITO = "" 'DIAS DE CREDITO PARA PAGAR FACTURA
FECHA_DE_VENCIMIENTO = "" 'INDICA EN QUE FECHA SE VENCIO EL CREDITO
DESCRIPCION_BOX = "" 'INDICA LO QUE SE VENDIO (REPUESTO O SERVICIO)
ESTATUS_Combo_Box1 = "" 'INDICA EL ESTATUS DE LA FACTURA (PAGADA O POR PAGAR)
MONTO_CON_IVA = "" 'INDICA EL TOTAL DE LA FACTURA CON EL IMPUESTO DEL IVA
PORCENTAJE_BOX = "" 'INDICA EL PORCENTAJE DE DESCUENTO A NIVEL ADMINISTRATIVO
ISRL_BOX = "" 'INDICA EL IMPUESTO SOBRE LA RENTA
IVA_RETENIDO = "" 'INDICA EL MONTO EXACTO DEL IMPUESTO IVA RETENIDO
ACTIVIDAD_E_BOX = "" 'INDICA EL DESCUENTO QUE HACEN ALGUNOS CLIENTES
TOTAL_PAGAR = "" 'INDICA EL MONTO TOTAL DE FACTURA YA HACIENDO LAS RESPECTIVAS RETENCIONES DE IVA
BANCO_BOX = "" 'INDICA EN QUE BANCO PAGARON LA FACTURA

    If codigo = "" Then Exit Sub
    On Error Resume Next
    fila = Sheets(1).Columns(1).Find(What:=codigo, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row

If fila = "" Then
Exit Sub
Else:
 NUMERO_DE_FACTURA = Sheets(1).Cells(fila, 1).Value
 CUADRO_CLIENTE = Sheets(1).Cells(fila, 2).Value
 FECHA_DE_EMISION = Sheets(1).Cells(fila, 3).Value
 DIAS_DE_CREDITO = Sheets(1).Cells(fila, 4).Value
 FECHA_DE_VENCIMIENTO = Sheets(1).Cells(fila, 5).Value
 DESCRIPCION_BOX = Sheets(1).Cells(fila, 6).Value
 ESTATUS_Combo_Box1 = Sheets(1).Cells(fila, 7).Value
 MONTO_CON_IVA = Sheets(1).Cells(fila, 8).Value
 COMPROVANTE_IVA = Sheets(1).Cells(fila, 9).Value
 PORCENTAJE_BOX = Sheets(1).Cells(fila, 10).Value
 ISRL_BOX = Sheets(1).Cells(fila, 11).Value
 IVA_RETENIDO = Sheets(1).Cells(fila, 12).Value
 ACTIVIDAD_E_BOX = Sheets(1).Cells(fila, 13).Value
 TOTAL_PAGAR = Sheets(1).Cells(fila, 14).Value
 BANCO_BOX = Sheets(1).Cells(fila, 15).Value

End If
End Sub

En el codigo de BOTON_GRABAR_Click
el funcionaria pero si haces la busqueda de fila en fila
A = A4 To 2000 por A = 5 To rows.count
Cells(A + 4, 1).Value = NUMERO_DE_FACTURA por
Cells(A, 1).Value = NUMERO_DE_FACTURA el exit for junto a la condicion If son buenas

pero para modificar una factura ya existente primero busco si existe la factura, si no existe se agrega, en caso contrario se modifica

para sustituir el bucle (entre mas datos mas lento se volvera), para encontrar la ultima celda vacia utilizo
filaf = Application.Max(5, Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1)
la condicion de Max(5,fila) es por el caso de no existir ningun dato cargado, la fila a usar sera 5

finalmente uso
If fila = "" Then '<------si no encuentro la factura entonces
filaf = Application.Max(5, Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1) '<-no encontro la factura, se agrega en la ultima fila
Else:
filaf = fila '<-si encontro la factura, la fila con la factura recibira los datos del userform
End If

para que se decida si se agregara la factura a una nueva fila(factura nueva) o se modificara la fila con la factura existente (factura ya existente), filaf dependiendo de la situacion tomara uno de esos valores

Código:
Private Sub BOTON_GRABAR_Click()
Dim filaf
Dim codigo, fila
codigo = NUMERO_DE_FACTURA

    On Error Resume Next
    fila = Sheets(1).Columns(1).Find(What:=codigo, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row

If fila = "" Then
filaf = Application.Max(5, Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1)
Else:
filaf = fila
End If

Sheets(1).Cells(filaf, 1).Value = NUMERO_DE_FACTURA
Sheets(1).Cells(filaf, 2).Value = CUADRO_CLIENTE
Sheets(1).Cells(filaf, 3).Value = FECHA_DE_EMISION
Sheets(1).Cells(filaf, 4).Value = DIAS_DE_CREDITO
Sheets(1).Cells(filaf, 5).Value = FECHA_DE_VENCIMIENTO
Sheets(1).Cells(filaf, 6).Value = DESCRIPCION_BOX
Sheets(1).Cells(filaf, 7).Value = ESTATUS_Combo_Box1
Sheets(1).Cells(filaf, 8).Value = MONTO_CON_IVA
Sheets(1).Cells(filaf, 9).Value = COMPROVANTE_IVA
Sheets(1).Cells(filaf, 10).Value = PORCENTAJE_BOX
Sheets(1).Cells(filaf, 11).Value = ISRL_BOX
Sheets(1).Cells(filaf, 12).Value = IVA_RETENIDO
Sheets(1).Cells(filaf, 13).Value = ACTIVIDAD_E_BOX
Sheets(1).Cells(filaf, 14).Value = TOTAL_PAGAR
Sheets(1).Cells(filaf, 15).Value = BANCO_BOX

NUMERO_DE_FACTURA.Value = Empty
CUADRO_CLIENTE.Value = Empty
FECHA_DE_EMISION.Value = Empty
DIAS_DE_CREDITO.Value = Empty
FECHA_DE_VENCIMIENTO.Value = Empty
DESCRIPCION_BOX.Value = Empty
ESTATUS_Combo_Box1.Value = Empty
MONTO_CON_IVA.Value = Empty
COMPROVANTE_IVA.Value = Empty
PORCENTAJE_BOX.Value = Empty
ISRL_BOX.Value = Empty
IVA_RETENIDO.Value = Empty
ACTIVIDAD_E_BOX.Value = Empty
TOTAL_PAGAR.Value = Empty
BANCO_BOX.Value = Empty
NUMERO_DE_FACTURA.SetFocus

End Sub

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 547
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: USERFORM PARA REGISTRAR ESTATUS DE FACTURAS

Mensaje por prayer el Mar Jul 18, 2017 10:46 am

Hola Moisés, Buenos Días, si estaba cerca, ahora veo el error que tenia el código. Muchas gracias por ayudarme a corregirlo.
Ya estoy poniendo en practica lo de grabar macros y revisar los códigos en VisualBasic, realmente es una gran ayuda, seguiré practicando hasta dominarlo.

Saludos Cordiales.
avatar
prayer

Masculino Cantidad de envíos : 10
Edad : 22
Ciudad - Pais : Venezuela
Version de Excel : 2016
Fecha de inscripción : 02/07/2017

Volver arriba Ir abajo

Re: USERFORM PARA REGISTRAR ESTATUS DE FACTURAS

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.