[Excel 2016] Archivando una fila según condición

ouska36 Mensajes publicados 3 Estado Miembro -  
michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   -
Bonjour à tous,

He recorrido el foro en busca de una solución para copiar/pegar una fila de la pestaña "Dashboard" a la pestaña "Archivos" cuando el valor de la columna "AD" es igual a "COMPLETE" (Excel 2016). La macro termina eliminando la fila archivada de la pestaña "Dashboard".

La solución que he encontrado (gracias a los contribuyentes) hace el trabajo hasta el pegado... la macro me pega la fila en la parte superior y sobrescribe la que fue archivada anteriormente...

Lo que deseo es un pegado que ingrese en la tabla "Archivos" a partir de la línea número 7 y que no sobrescriba las filas ya archivadas (posibilidad de archivar varias filas al mismo tiempo): Ya sea añadiendo las filas una debajo de la otra o, si no es complicado, insertar las nuevas filas archivadas en la parte superior de la tabla y desplazar las antiguas hacia abajo.

¿Pueden ayudarme, por favor, a corregir "mi" macro (no soy para nada un iniciado, estoy aprendiendo sobre la marcha):
Código:

Sub Grupo13_Cliquer()

A = Worksheets("Dashboard").Cells(Rows.Count, 2).End(xlUp).Row
For i = A To 2 Step -1
If Worksheets("Dashboard").Cells(i, 30).Value = "COMPLETE" Then
Worksheets("Dashboard").Rows(i).copy Worksheets("Archives").Cells(Rows.Count, 1).End(xlUp)
Worksheets("Dashboard").Rows(i).EntireRow.Delete
End If
Next

End Sub


Gracias por su ayuda.
Atentamente

3 respuestas

  1. ouska36 Mensajes publicados 3 Estado Miembro 1
     
    Hola michel_m, hola ccm81,

    Gracias por su ayuda.
    Me propusieron en otro foro la siguiente solución que funciona muy bien:


    Sub Grupo13_Cliquer()

    Dim DashRow As Long
    Dim ArchiveRow As Long
    Dim i As Long
    Dim plage As Range

    DashRow = Worksheets("Dashboard").Cells(Rows.Count, 2).End(xlUp).Row
    For i = DashRow To 7 Step -1
    If Worksheets("Dashboard").Cells(i, 30).Value = "COMPLETE" Then
    Set plage = Worksheets("Archives").Range("B6:B" & Cells(Rows.Count, 2).End(xlUp).Row)
    ArchiveRow = plage.SpecialCells(xlCellTypeBlanks).Cells(1, 1).Row ' Permite verificar el número de fila objetivo
    Worksheets("Dashboard").Rows(i).Copy
    Worksheets("Archives").Cells(ArchiveRow, 1).PasteSpecial
    Worksheets("Dashboard").Rows(i).EntireRow.Delete
    End If
    Next

    End Sub


    El único problema ahora es que la copia de las celdas se realiza fuera de la tabla cuando la tabla está llena:
    1
    1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      quizás mires lo que te propuse....
      y si es necesario, responde a lo que te he pedido

      y aparentemente, a diferencia del otro foro, no has proporcionado tu archivo....
      0
  2. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    Hola

    Prueba esto
     Sub Grupo13_Cliquer() A = Worksheets("Dashboard").Cells(Rows.Count, 2).End(xlUp).Row For i = A To 2 Step -1 If Worksheets("Dashboard").Cells(i, 30).Value = "COMPLETE" Then Worksheets("Dashboard").Rows(i).Copy Worksheets("Archives").Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) Worksheets("Dashboard").Rows(i).EntireRow.Delete End If Next End Sub

    Cdlmnt
    0
    1. ouska36 Mensajes publicados 3 Estado Miembro 1
       
      ¡Gracias!

      Efectivamente, copia las filas sin sobrescribirlas en la pestaña "Archivos" pero lo hace fuera de la tabla y no dentro de la tabla. ¿Qué debo modificar?

      Atentamente
      0
  3. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Hola a todos,

    ¿Cómo estás CCM81? ;o)

    Copiar toda una línea es inútil: ¿cuál es la última columna utilizada en "dashboard"?

    ¿Hay varios "completos" para transferir a la vez o solo uno?

    --
    Michel
    0
    1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      Mientras esperamos una respuesta a las aclaraciones solicitadas a nuestro amigo Ouska, por ejemplo, con el archivo adjunto en cjoint.com

      https://mon-partage.fr/f/wx9cWSDC/
      0