No permitir seriales vendidos

28/09/2007 - 14:04 por GRIEGO59 | Informe spam
Hola,
Tengo una hoja FACTURADEVENTAS donde escribo los Nº de seriales de los
productos que se están vendiendo, pero si por error escribo un serial de un
producto ya vendido?
Como puedo informarle a Excel que ese producto ya fue vendido y no debe
permitir que se escriba ese serial?

En ese mismo libro, tengo una hoja COMPRAS que muestra todos los productos
comprados, vendidos y no vendidos con las columnas:
Serial del producto
Fecha de compra del producto
Número de factura de compra del producto
Descripción del producto
Costo del producto
Precio de venta presupuestado del producto
Fecha de venta del producto
Número de factura de venta del producto
Precio de venta final del producto
Nombre del Proveedor del producto
Ubicados en las columnas A, B, C, D, E, F, G, H, I, J, respectivamente, la
fila 1 es para títulos.

El rango donde incluyo los seriales que se están vendiendo en la hoja
FACTURADEVENTAS es B4:B18

Por los momentos se me ocurre crear una hoja adicional PRODUCTOSNOVENDIDOS y
cada vez que se vaya emitir una factura de ventas, copiar el contenido de la
hoja COMPRAS, ordenar por fecha de venta, eliminar las líneas sin fecha de
venta y copiar la columna de códigos en la hoja FACTURADEVENTA en un rango
preestablecido para eun combo del rango B4:B18, pero me parece que debe haber
una forma mas sencilla y rápida.

Gracias por su ayuda.
Griego59

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
29/09/2007 - 09:48 | Informe spam
hola, Darío !

puedes evitar la hoja adicional y el combo si aprovechas el evento '_change' de la hoja "facturadeventas"
-> OJO: como ya tienes una propuesta para utilizar ese evento, es necesario hacerle unas adaptaciones

[segun parece] la posible repeticion de seriales pudiera ser por alguna factura anterior o [incluso] en la *actual* -???-

copia/pega las siguientes lineas [modificadas de la propuesta anterior]
-> en el modulo de codigo de la hoja "facturadeventas"

y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Msj As String
If Intersect(Target, Range("e2,b4:b18")) Is Nothing Then Exit Sub
If IsEmpty(Target) Then Exit Sub
With Worksheets("clientes")
If Target.Address <> "$E$2" Then Goto Seriales
If Not Evaluate("iserror(f2)") Then Exit Sub
If MsgBox("El codigo solicitado: " & Target & " NO existe..." & vbCr & _
"Confirmas que debe darse de alta ?", vbYesNo, _
"Alta de clientes...") = vbNo Then Exit Sub
SendKeys "{down " & Application.CountA(.[a:a]) - 1 & "}" & Target & "{tab}"
.ShowDataForm
.[a:b].Sort Key1:=.[a2], Order1:=xlAscending, Header:=xlYes
Target.Select
Exit Sub
Seriales:
If Application.CountIf([b4:b18], Target) > 1 Then Msj = " esta duplicado !!!"
If Val(Application.VLookUp(Target, .[a:g], 7, 0)) > 0 Then Msj = " es un producto YA facturado !!!"
End With
If Msj <> "" Then MsgBox "El serial " & Target & Msj: Target.ClearContents
End Sub

__ la consulta original __
Tengo una hoja FACTURADEVENTAS donde escribo los Nº de seriales de los productos que se estan vendiendo
pero si por error escribo un serial de un producto ya vendido?
Como puedo informarle a Excel que ese producto ya fue vendido y no debe permitir que se escriba ese serial?

En ese mismo libro, tengo una hoja COMPRAS que muestra todos los productos comprados, vendidos y no vendidos con las columnas:
Serial del producto
Fecha de compra del producto
Numero de factura de compra del producto
Descripcion del producto
Costo del producto
Precio de venta presupuestado del producto
Fecha de venta del producto
Nºmero de factura de venta del producto
Precio de venta final del producto
Nombre del Proveedor del producto
Ubicados en las columnas A, B, C, D, E, F, G, H, I, J, respectivamente, la fila 1 es para titulos.

El rango donde incluyo los seriales que se estan vendiendo en la hoja FACTURADEVENTAS es B4:B18

Por los momentos se me ocurre crear una hoja adicional PRODUCTOSNOVENDIDOS
y cada vez que se vaya emitir una factura de ventas, copiar el contenido de la hoja COMPRAS
ordenar por fecha de venta, eliminar las lineas sin fecha de venta y copiar la columna de codigos
en la hoja FACTURADEVENTA en un rango preestablecido para eun combo del rango B4:B18
pero me parece que debe haber una forma mas sencilla y rapida.
Respuesta Responder a este mensaje
#2 GRIEGO59
29/09/2007 - 17:36 | Informe spam
Dónde está el módulo de códigos?

"Héctor Miguel" escribió:

hola, Darío !

puedes evitar la hoja adicional y el combo si aprovechas el evento '_change' de la hoja "facturadeventas"
-> OJO: como ya tienes una propuesta para utilizar ese evento, es necesario hacerle unas adaptaciones

[segun parece] la posible repeticion de seriales pudiera ser por alguna factura anterior o [incluso] en la *actual* -???-

copia/pega las siguientes lineas [modificadas de la propuesta anterior]
-> en el modulo de codigo de la hoja "facturadeventas"

y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Msj As String
If Intersect(Target, Range("e2,b4:b18")) Is Nothing Then Exit Sub
If IsEmpty(Target) Then Exit Sub
With Worksheets("clientes")
If Target.Address <> "$E$2" Then Goto Seriales
If Not Evaluate("iserror(f2)") Then Exit Sub
If MsgBox("El codigo solicitado: " & Target & " NO existe..." & vbCr & _
"Confirmas que debe darse de alta ?", vbYesNo, _
"Alta de clientes...") = vbNo Then Exit Sub
SendKeys "{down " & Application.CountA(.[a:a]) - 1 & "}" & Target & "{tab}"
.ShowDataForm
.[a:b].Sort Key1:=.[a2], Order1:=xlAscending, Header:=xlYes
Target.Select
Exit Sub
Seriales:
If Application.CountIf([b4:b18], Target) > 1 Then Msj = " esta duplicado !!!"
If Val(Application.VLookUp(Target, .[a:g], 7, 0)) > 0 Then Msj = " es un producto YA facturado !!!"
End With
If Msj <> "" Then MsgBox "El serial " & Target & Msj: Target.ClearContents
End Sub

__ la consulta original __
> Tengo una hoja FACTURADEVENTAS donde escribo los Nº de seriales de los productos que se estan vendiendo
> pero si por error escribo un serial de un producto ya vendido?
> Como puedo informarle a Excel que ese producto ya fue vendido y no debe permitir que se escriba ese serial?
>
> En ese mismo libro, tengo una hoja COMPRAS que muestra todos los productos comprados, vendidos y no vendidos con las columnas:
> Serial del producto
> Fecha de compra del producto
> Numero de factura de compra del producto
> Descripcion del producto
> Costo del producto
> Precio de venta presupuestado del producto
> Fecha de venta del producto
> Nºmero de factura de venta del producto
> Precio de venta final del producto
> Nombre del Proveedor del producto
> Ubicados en las columnas A, B, C, D, E, F, G, H, I, J, respectivamente, la fila 1 es para titulos.
>
> El rango donde incluyo los seriales que se estan vendiendo en la hoja FACTURADEVENTAS es B4:B18
>
> Por los momentos se me ocurre crear una hoja adicional PRODUCTOSNOVENDIDOS
> y cada vez que se vaya emitir una factura de ventas, copiar el contenido de la hoja COMPRAS
> ordenar por fecha de venta, eliminar las lineas sin fecha de venta y copiar la columna de codigos
> en la hoja FACTURADEVENTA en un rango preestablecido para eun combo del rango B4:B18
> pero me parece que debe haber una forma mas sencilla y rapida.



Respuesta Responder a este mensaje
#3 GRIEGO59
29/09/2007 - 18:02 | Informe spam
Gracias por tu ayuda y por favor, disculpa, tantas prguntas.

Tengo Así:
En la hoja compras, Menú, Herramientas, Macro, Editor de Visual Basic:
Doble clic en módulo 1: aparece macro "Factura de ventas"
Doble clic en módulo 2: aparece vacío
Doble clic en módulo 1: aparece el código que me acabas de dar.
Doble clic en módulo 1: aparece vacío

Voy bien? No e funciona el código para restringir Nº de cédulas de clientes
y Seriales Vendidos.
Y si, está bien eso que no se pueden admitir seriales ni de facturas
anteriores ni de factura actual.

Gracias,
Griego59

"Héctor Miguel" escribió:

hola, Darío !

puedes evitar la hoja adicional y el combo si aprovechas el evento '_change' de la hoja "facturadeventas"
-> OJO: como ya tienes una propuesta para utilizar ese evento, es necesario hacerle unas adaptaciones

[segun parece] la posible repeticion de seriales pudiera ser por alguna factura anterior o [incluso] en la *actual* -???-

copia/pega las siguientes lineas [modificadas de la propuesta anterior]
-> en el modulo de codigo de la hoja "facturadeventas"

y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Msj As String
If Intersect(Target, Range("e2,b4:b18")) Is Nothing Then Exit Sub
If IsEmpty(Target) Then Exit Sub
With Worksheets("clientes")
If Target.Address <> "$E$2" Then Goto Seriales
If Not Evaluate("iserror(f2)") Then Exit Sub
If MsgBox("El codigo solicitado: " & Target & " NO existe..." & vbCr & _
"Confirmas que debe darse de alta ?", vbYesNo, _
"Alta de clientes...") = vbNo Then Exit Sub
SendKeys "{down " & Application.CountA(.[a:a]) - 1 & "}" & Target & "{tab}"
.ShowDataForm
.[a:b].Sort Key1:=.[a2], Order1:=xlAscending, Header:=xlYes
Target.Select
Exit Sub
Seriales:
If Application.CountIf([b4:b18], Target) > 1 Then Msj = " esta duplicado !!!"
If Val(Application.VLookUp(Target, .[a:g], 7, 0)) > 0 Then Msj = " es un producto YA facturado !!!"
End With
If Msj <> "" Then MsgBox "El serial " & Target & Msj: Target.ClearContents
End Sub

Respuesta Responder a este mensaje
#4 Héctor Miguel
29/09/2007 - 19:19 | Informe spam
hola, Darío !

Tengo Asi:
En la hoja compras, Menu, Herramientas, Macro, Editor de Visual Basic:
Doble clic en modulo 1: aparece macro "Factura de ventas"
Doble clic en modulo 2: aparece vacio
Doble clic en modulo 1: aparece el codigo que me acabas de dar.
Doble clic en modulo 1: aparece vacio
Voy bien? No e funciona el codigo para restringir Nº de cedulas de clientes y Seriales Vendidos.
Y si, esta bien eso que no se pueden admitir seriales ni de facturas anteriores ni de factura actual.



esta parte de las [dizque] *instrucciones*...
copia/pega las siguientes lineas [modificadas de la propuesta anterior]
-> en el modulo de codigo de la hoja "facturadeventas"





-> significa que las lineas de codigo las debes poner en el modulo que aparece...
despues de hacer un clic-secundario/derecho sobre la etiqueta de la hoja de nombre "facturadeventas"

o... haciendo un doble-clic en el editor de vba sobre el objeto worksheet: -> (Hoja_X) facturadeventas [o como se llame la hoja]

si cualquier duda... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida