1. AyudaExcel utiliza cookies. Si continuas utilizando AyudaExcel, estás aceptando la utilización de nuestras cookies. Más información.
  2. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

Solucionado Copiar filas sin repetición a otra hoja si cumple condición en columna.

Tema publicado en 'Macros y programación VBA' iniciado por frajavp, 11 Mar 2013.

Estado del tema:
Cerrado para nuevas respuestas
  1. frajavp

    frajavp Nuevo Usuario

    Registrado:
    10 Mar 2013
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Hola es mi primera intervención y os cuento m problema, estoy haciendo un libro para la gestión de la documentación de un deapacho de Asesoría, en una hoja se registran los datos de todos los expedientes que entran en la asesoria, que pueden ser referidos a: Hacienda, Inspección, etc... Y necesito una macro que cuando se ejecute copya la fila dón está incluido el expediente, a hojas específicas, para cada grupo de expedientes, es decir los de Hacienda a la hoja Hacienda, y así con todas las categorías, estoy probando esta Macro pero no comprueba si el expediente está ya en la hoja correspondiente y cuando voy a grabar un nuevo expediente me vuelve a copiar ese pero también me copia los anteriores de la misma categoría. la macro que uso es:


    CÓDIGO:
    Sub Crear_registrosexpedientes()
    
    filalibre = Sheets("Expedientes").Range("D65000").End(xlUp).Row + 1
    dato = "HACIENDA"
    If dato = "" Then Exit Sub
    Set buscado = ActiveSheet.Range("D3:D" & Range("D65000").End(xlUp).Row).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
    If Not buscado Is Nothing Then
    ubica = buscado.Address
    Do
    buscado.EntireRow.Copy Destination:=Sheets("Hacienda").Cells(filalibre, 1)
    filalibre = filalibre + 1
    Set buscado = ActiveSheet.Range("d3:d" & Range("D65000").End(xlUp).Row).FindNext(buscado)
    Loop While Not buscado Is Nothing And buscado.Address <> ubica
    End If
    
    filalibre = Sheets("Expedientes").Range("D65000").End(xlUp).Row + 1
    dato = "INSPECCIÓN"
    If dato = "" Then Exit Sub
    Set buscado = ActiveSheet.Range("D3:D" & Range("D65000").End(xlUp).Row).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
    If Not buscado Is Nothing Then
    ubica = buscado.Address
    Do
    buscado.EntireRow.Copy Destination:=Sheets("Inspección").Cells(filalibre, 1)
    filalibre = filalibre + 1
    Set buscado = ActiveSheet.Range("d1:d" & Range("D65000").End(xlUp).Row).FindNext(buscado)
    Loop While Not buscado Is Nothing And buscado.Address <> ubica
    
    End If
    
    
    End Sub
    Y lo que necesito es que compruebe antes si ya hay un expediente con el código igual el la hoja correspondiente y se salte esa fila.


    Muchas gracías

    Adjuntos:

  2. ioyama

    ioyama Moderador Staff AyudaExcel

    Registrado:
    24 Jun 2008
    Mensajes:
    4.582
    Me Gusta recibidos:
    345
    Hola frajavp

    Revisa el adjunto. Tú dirás si he atinado con tu necesidad.

    Un saludo desde Vitoria

    Adjuntos:

  3. SEBASTIAN67

    SEBASTIAN67 Usuario Activo

    Registrado:
    27 Feb 2010
    Mensajes:
    480
    Me Gusta recibidos:
    96
    CÓDIGO:
    Sub Crear_registrosexpedientes()
    fila = Sheets("Expedientes").Cells(Rows.Count, 1).End(xlUp).Row
    For a = 2 To fila
        Set DATO = Sheets("Expedientes").Cells(a, 1)
        hoja = DATO.Offset(0, 2)
        filalibre = Sheets(hoja).Cells(Rows.Count, 1).End(xlUp).Row
        RANGO = "A1" & ":A" & filalibre
        Set buscado = Sheets(hoja).Range(RANGO).Find(DATO, LookIn:=xlValues, lookat:=xlWhole)
        If buscado Is Nothing Then
            filalibre = Sheets(hoja).Cells(Rows.Count, 1).End(xlUp).Row + 1
            DATO.EntireRow.Copy Destination:=Sheets(hoja).Cells(filalibre, 1)
        End If
    Next a
    End Sub
    Lo que si tienes que tener en cuenta es que si acentúas el tipo de expediente, el nombre de la hoja correspondiente debe de llevar también acento.
  4. frajavp

    frajavp Nuevo Usuario

    Registrado:
    10 Mar 2013
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Muchas gracias por la respuesta esta tarde lo pruebo y te digo.

    Javier

    - - - - - Mensaje combinado - - - - -

    Muchas gracias, en primer lugar por la rapidez en la contestación y en segundo lugar por la eficacia.

    Me funciona perfectamente la hoja con esa macro.

    Pregunta resuelta.

    Un saludo desde Salamanca

    - - - - - Mensaje combinado - - - - -

    Gracias a todos.

    Tema solucionado
Estado del tema:
Cerrado para nuevas respuestas

Compartir esta página