Macro que me informe las ultimas 3 visitas de un cliente

Tengo una hoja de excel llamada "VISITAS" en la cual, en la celda "C7" escribo la identificación de un cliente (ID Cliente).

Quisiera una macro, que al ser ejecutada, busque las últimas 3 visitas de dicho cliente (Por medio del ID Cliente) de la más reciente a la más antigua, diciéndome la fecha en que vino y el articulo que compró ese día. Estos datos están consignados en la hoja

Estos datos los tengo actualmente en una hoja llamada "CARTERA" del mismo libro, en la cual en la columna "A" tengo las fechas en las que han venido los clientes, en la columna "C" tengo los ID Clientes, y en la columna "E" tengo lo que compraron.

Tener en cuenta que si el ID Cliente no se encuentra, que muestre una ventana de información informando "Dicho cliente es nuevo y aún no ha comprado en nuestra tienda"

Si el ID Cliente ha comprado, que muestre las ultimas 3 compras que ha realizado (Si solo ha realizado 2 compras entonces las 2 y si solo ha hecho 1 sola compra entonces que muestre solo esa).

Si ha realizado más de 3 compras, solo debe mostrar las últimas 3 compras con sus respectivas fechas de compra.

Quisiera que esa información de las compras que ha hecho, las muestre a través de una ventaba de información (AVISO).

Ejemplo:

Si yo buscara el ID Cliente: 45434345 me debería informar las ultimas 3 compras de OLGA PLATA es decir:

25/01/2014  -  Zapatillas

13/01/2014  -  Blusa

05/01/2014  -  Bolso

Y si busco el ID Cliente: 532456343 me debería informar las 3 ultimas compras de JAVIER MARTINEZ

27/01/2014  -  Televisor

23/01/2014  -  Reloj

23/01/2014  -  Camisa

1 respuesta

Respuesta
1

 H o l a:

Pon la siguiente macro en los eventos de tu hoja "VISITAS", cada vez que captures un id en la celda C7 la macro se ejecutará en automático:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C7")) Is Nothing Then
        If Target = "" Then Exit Sub
        Set h1 = Sheets("CARTERA")
        u = h1.Range("A" & Rows.Count).End(xlUp).Row
        With h1.Sort
            .SortFields.Clear
            .SortFields.Add Key:=h1.Range("C3:C" & u)
            .SortFields.Add Key:=h1.Range("A3:A" & u)
            .SetRange Range("A2:E" & u): .Header = xlYes: .Apply
        End With
        '
        n = 0
        cad = ""
        Set r = h1.Columns("C")
        Set b = r.Find(Target, lookat:=xlWhole, SearchDirection:=xlPrevious)
        If Not b Is Nothing Then
            ncell = b.Address
            cliente = h1.Cells(b.Row, "D")
            Do
                'detalle
                n = n + 1
                If n < 4 Then
                    cad = cad & h1.Cells(b.Row, "A") & " - " & h1.Cells(b.Row, "E") & vbCr
                Else
                    Exit Do
                End If
                Set b = r.FindPrevious(b)
            Loop While Not b Is Nothing And b.Address <> ncell
        End If
        '
        If cad = "" Then
            MsgBox "Dicho cliente es nuevo y aún no ha comprado en nuestra tienda", vbExclamation, "CLIENTE: " & Target
        Else
            MsgBox cad, , "Últimas compras del Cliente: " & Target & " - " & cliente
        End If
        Target.Select
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas