Modificar macro para que no repita la informacion

De acuerdo a tu planteamiento debe hacer lo siguiente:

Cuando se genera la factura A815-1 se ejecuta macro para que coloque las informaciones de las celdas N9, H13 y N5 en las columnas G, D y B de la plantilla. Cuando se genere la factura A815-2, la macro al ejecutarse debe ir a buscar todas las facturas (A815) y si determina que ya hay colocado los datos de A815-1 en la plantilla, pues obviar esa factura e irse a A815-2 y cuando se haga la factura A815-3 y determine que ya coloco las anteriores obviarlas y asi sucesivamente para que no repita la misma informacion cada ves que se ejecute.

En resumen, el objetivo es evitar que repita la informacion cada ves que se ejecute y entiendo que el numero secuencial que esta en D5 de la factura puede ayudar a corregir.

1 respuesta

Respuesta
1

 H o l a :

Va a funcionar de esta forma, en la columna "J" voy a guardar el archivo que ya se cargó, entonces si ejecutas nuevamente la macro, se revisaría si ya existe el archivo en la columna J, si ya existe no lo carga, si no existe lo carga.

Puedes cambiar la columna "J" por otra columna en esta línea de la macro:

col = "J"



Sub BuscarMatriculas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    '
    If h1.[B2] = "" Then
        MsgBox "Poner matrícula"
        Exit Sub
    End If
    '
    ruta = "C:\documents and Settings\Administrador\Escritorio\carpeta de factura\"
    'ruta = l1.Path & "\"
    arch = Dir(ruta & h1.[B2] & "*.xls*")
    col = "J"
    Do While arch <> ""
        Set b = h1.Columns(col).Find(arch, lookat:=xlWhole)
        If b Is Nothing Then
            Set l2 = Workbooks.Open(ruta & arch)
            Set h2 = l2.Sheets(1)
            u = 11
            Do While h1.Cells(u, "B") <> ""
                u = u + 1
            Loop
            h1.Cells(u, "G") = h2.[N9]
            h1.Cells(u, "D") = h2.[H13]
            h1.Cells(u, "B") = h2.[N5]
            h1.Cells(u, col) = arch
            l2.Close False
        End If
        arch = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Terminado"
End Sub

'

'

Hermano mio entiendo que esa es la solución, puesto que no veo otra por el momento. Lo que voy a hacer es alejar la información de la plantilla, tal como me en la línea (col=j) para que no se vea.

De nuevo,.. un billón de gracias por todo.

MG

No olvides valorar las respuestas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas