Excel - Cambiar Macro. registrar artículos según la condición fecha

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 5 puestos en Excel (en relación al último mes)
Gráfica de Excel

Cambiar Macro. registrar artículos según la condición fecha

Publicado por Rhossi (2 intervenciones) el 08/01/2019 01:44:15
Buen día!
Pues soy nueva en esto de las macros y realmente no entiendo mucho el lenguaje.
Les platico que estoy haciendo una macro que me ayude a registrar la salida de algunos artículos, ya tengo un avance, sin embargo, no la he podido completar, porque necesito cambiar la forma en que registra las salidas.

Tengo esta macro que registra la salida de artículos, pero lo hace con los primeros que encuentra en la lista, los registros mas recientes; quiero que haga lo contrario, que registre los más antiguos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Sub Registrar_Ventas()
'   registrar  salida de un producto 
    Set h1 = Sheets("VENTAS")
    Set h2 = Sheets("BD")
    '
    'VALIDACIONES
    '
    If h1.Range("E4").Value = "" Then
        MsgBox "Falta la fecha"
        Exit Sub
    End If
    If h1.Range("E6").Value = "" Then
        MsgBox "Falta el producto"
        Exit Sub
    End If
    cant = h1.Range("E8").Value
    If cant = "" Or Not IsNumeric(cant) Then
        MsgBox "Falta el número de artículos"
        Exit Sub
    End If
    If h1.Range("E10").Value = "" Or Not IsNumeric(h1.Range("E1").Value) Then
        MsgBox "Faltan los ingresos"
        Exit Sub
    End If
    cuenta = WorksheetFunction.CountIf(h2.Columns("D"), h1.Range("E6").Value)
    If cuenta = 0 Then
        MsgBox "No existe el producto"
        Exit Sub
    End If
    If cuenta < cant Then
        MsgBox "El número de artículos vendidos es inferior al número en BD"
        Exit Sub
    End If
    '
    precio = h1.Range("E10").Value / cant
    Set r = h2.Columns("D")
    Set b = r.Find(h1.Range("E6").Value, LookAt:=xlWhole)
    n = 0
    If Not b Is Nothing Then
        celda = b.Address
        Do
            'detalle
            If n = cant Then Exit Do
            h2.Cells(b.Row, "N").Value = h1.Range("E4").Value
            h2.Cells(b.Row, "O").Value = precio
            h2.Cells(b.Row, "P").Value = precio - h2.Cells(b.Row, "F").Value
            ganancia = ganancia + (precio - h2.Cells(b.Row, "F").Value)
            n = n + 1
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> celda
    End If
    h1.Range("E12").Value = ganancia
    MsgBox "Venta registrada." & vbCr & vbCr & _
           "Ganancia neta : " & ganancia, vbInformation, "VENTAS"
    h1.Range("E4:E12").Value = ""
End Sub

Les explico un poco mas como tengo mis datos.

Tengo dos hojas una "VENTAS" y otra "BD"

La hoja con el nombre de “VENTAS” en la cual ingreso los siguientes datos:

Fecha de venta en E4
Producto en E6
Núm. Arts. Vendidos en E8
Ingresos en E10
Ganancia neta (o utilidad) en E12

En la hoja con el nombre “BD” tengo varios datos que voy registrando según mis entradas de productos. Estos se van registrando a partir de la fila 9

Fecha de pedido en la columna A
Tienda en B
Numero de pedido en C
Producto en D
artículos que ingresan en E
precio en F
cuenta tienda en G
cuenta de pago en H
estado de pedido en I
fecha vencimiento en J
seguimiento en K
notas en L
reembolso en M
FECHA DE VENTA en N
PRECIO DE VENTA en O
UTILIDAD en P

Algunos de los datos que ingreso en la hoja "VENTAS" se van a registrar en la columna N, O y P, pero para ello, al ejecutarse la macro tendrá que revisar en la columna D que el articulo coincida con el que le estoy indicando en la hoja "VENTAS" E6 y revisar cual es articulo mas antiguo disponible,y registrar la venta.

Pues espero haber sido clara y contar con su ayuda. De antemano muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.072
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cambiar Macro. registrar artículos según la condición fecha

Publicado por Antoni Masana (1416 intervenciones) el 08/01/2019 07:34:46
No entiendo lo que haces ni como tienes organizados los datos.

Creo entender que en la hoja de VENTAS introduces la venta y en la hoja BD ¿El detalle de las ventas? ¿En acumulado de las ventas? si es este ultimo supuesto como puedes ser que tengas más de una vez un mismo producto.

Y lo que no entiendo es que sentido tienes esto "y revisar cual es articulo mas antiguo disponible,y registrar la venta."

Sin ver que tienes no te puedo ayudar.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha disminuido su posición en 5 puestos en Excel (en relación al último mes)
Gráfica de Excel

Cambiar Macro. registrar artículos según la condición fecha

Publicado por Rhossi (2 intervenciones) el 09/01/2019 23:42:38
Gracias por la pronta respuesta.

Supones bien, en la hoja VENTAS introduzco la venta y en BD se encuentra el detalle de ventas, solo que voy agregando producto por producto, ya que no se van acumulando los mismos productos. Cada producto que entra tiene un renglón con sus datos, como fecha, número de pedido, tienda o proveedor y cosas así, esto para darle seguimiento a cada uno. así me funciona.

Mi hoja VENTAS se encuentra así



ventas-lwp


En la hoja BD tengo los siguientes datos


bd-lwp

En este ejemplo tengo todos las tiendas que me proveen con el mismo nombre, sin embargo, no siempre es así; aunque tengo el mismo producto, mismas características, la tienda que me provee es diferente, por ello quiero que al ingresar la venta, revise en la existencia del producto más antiguo y agregue los datos de la venta (fecha de venta, precio de venta y utilidad o ganancia).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar