Macro para recorrer una lista y copiar los datos en otra hoja

Ya tengo lista mi macro que recorre la lista y me devuelve los valores que necesito cuando en esa fila se cumple la condición. Ahora lo que necesito es que cada vez que se encontró la condición me vaya listando en otra hoja esos valores, así quedando después en la hoja todas las filas donde se encontró ese valor.

La macro que recorre la lista es la siguiente:

Public msj As String
Sub ""()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim fila, Doctip, Docdep, num, rev, tip, est, dep As String
Dim countc As Integer
fila = 4
While Sheets("Lista").Cells(fila, 7) <> Empty
est = Sheets("Lista").Cells(fila, 11).Value
dep = Sheets("Lista").Cells(fila, 4).Value
If dep = "CALIDAD" And est = "ACTUALIZAR" And est <> Empty Then
countc = countc + 1
avnom = Sheets("Lista").Cells(fila, 5)
Docdep = Sheets("Lista").Cells(fila, 4)
Doctip = Sheets("Lista").Cells(fila, 3)
num = Sheets("Lista").Cells(fila, 7)
tip = Sheets("Lista").Cells(fila, 6)
rev = Sheets("Lista").Cells(fila, 8)
msjcalidad = " El " & Doctip & " " & tip & "-" & num & "-" & rev & " perteneciente al departamento de " & Docdep & " requiere revision y actualizacion." & vbCr & " Cantidad de documentos por revisar " & countc & ""
UserForm_Calidad.Show
End If
fila = fila + 1
Wend

1 Respuesta

Respuesta
1

H o l a:

Te anexo la macro actualizada

Sub macro()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = Sheets("Lista")
    Set h2 = Sheets("otra hoja")
    h2.Cells.ClearContents
    fila = 4
    j = 4
    While h1.Cells(fila, 7) <> Empty
        est = h1.Cells(fila, 11).Value
        dep = h1.Cells(fila, 4).Value
        If dep = "CALIDAD" And est = "ACTUALIZAR" Then
            countc = countc + 1
            avnom = h1.Cells(fila, 5)
            Docdep = h1.Cells(fila, 4)
            Doctip = h1.Cells(fila, 3)
            num = h1.Cells(fila, 7)
            tip = h1.Cells(fila, 6)
            rev = h1.Cells(fila, 8)
            msjcalidad = " El " & Doctip & " " & tip & "-" & num & "-" & rev & " perteneciente al departamento de " & Docdep & " requiere revision y actualizacion." & vbCr & " Cantidad de documentos por revisar " & countc & ""
            h1.Rows(fila).Copy h2.Rows(j)
            j = j + 1
        End If
        fila = fila + 1
    Wend
    UserForm_Calidad.Show
End Sub

Pase la línea del Userform_calidad.show, fuera del Wend ya que se va a abrir cada vez que cumple la condición; y si no lo cierras puede llenarse la memoria.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas