Jump to content

COPIAR RANGO DE DATOS SEGUN CONDICION


Recommended Posts

Hola amigos como estan! 

ando con una inquietud hace días que me mire todos los videos que encontre y no logro resolver un punto importante en  mi proyecto.

Tengo dos Archivos excel: Datos - Abastecimientos2 y Autorizaciones., ambos archivos tienen una hoja llamada "Datos" 

En el archivo de Datos - Abastecimientos, en la Hoja datos, van ingresando datos a los cuales se le agrega el valor = "Prespuestado" una vez que se hice la busqueda de precios. 

Lo que estaba intentando con el modulo 1 es que me busque todos los datos de esa hoja y  me copie solo las filas que cumplen la condicion de tener la palabra "Presupuestado".  y me las pegue en la Hoja Datos del archivo Autorizaciones.

Logre que me abra el archivo y copie los formatos he hice otras pruebas y me copiaba solo el ultimo valor encontrado ... 

les comparto el codigo... que estaba probando y no me funciona y los dos archivos.

Sub buscar_ultpedido()
Dim ufila6 As String, ufila7 As String
Dim rango As Range
Dim KPIdestino As Worksheet, MSTorigen As Worksheet, Plant As Range
Dim compID As Range
Dim i As Long
Dim primera As Variant
Dim celda As Range
Dim poblacion As String
Dim palabraBuscada As String

Application.ScreenUpdating = False

Workbooks.Open (ActiveWorkbook.Path & "\Autorizaciones.xlsm")

Set KPIdestino = Workbooks("Autorizaciones.xlsm").Worksheets("Datos")
ThisWorkbook.Activate

Set MSTorigen = Workbooks("Datos - Abastecimientos2.xlsm").Worksheets("Datos")

palabraBuscada = "PRESUPUESTADO"
ufila6 = MSTorigen.Cells(Rows.Count, 1).End(xlUp).Row
If ufila6 < 2 Then ufila6 = 2

ufila7 = KPIdestino.Cells(Rows.Count, 1).End(xlUp).Row + 1
If ufila7 < 2 Then ufila7 = 2


'If MSTorigen.Cells(ufila6, 11) = palabraBuscada Then
     For i = 2 To ufila6
        j = Hoja1.Cells(i, 1).Row
        Set rango = MSTorigen.Range("A" & j & ":K" & ufila6)
            If rango hoja1.Range("A" & j & ":K" & ufila6) = palabraBuscada Then
                rango.Copy
                KPIdestino.Range("A" & ufila7).PasteSpecial xlPasteAll
                Application.CutCopyMode = False
            End If
           ' Next
        Exit Sub
     Next
'End If
End Sub

 

Edited by roa30
Link to comment
Share on other sites

Seguramente mi error esta en como aplico el criterio de seleccion... pero no logro comprender como unir esas condiciones con el rango a copiar...

Me podrian guiar en que estoy haciendo mal?

Link to comment
Share on other sites

Lo he resulto!... les comparto el codigo por si alguno tiene un problema similar!

 

Sub Copiar_Filas_Presupuestadas(): On Error Resume Next

Dim ufila6 As String, ufila7 As String
Dim KPIdestino As Worksheet, MSTorigen As Worksheet, Plant As Range
Dim i As Long

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Workbooks.Open (ActiveWorkbook.Path & "\Autorizaciones.xlsm")

Set KPIdestino = Workbooks("Autorizaciones.xlsm").Worksheets("Datos")
ThisWorkbook.Activate

Set MSTorigen = Workbooks("Datos - Abastecimientos.xlsm").Worksheets("Presupuestos")

Hoja2.Activate

j = 2 ' variable inicial
ufila6 = MSTorigen.Cells(Rows.Count, 1).End(xlUp).Row ' ultima fila de datos origen
ufila7 = KPIdestino.Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To ufila6
    ' comprobacion de estado
        If Cells(i, "I").Value = "PRESUPUESTADO" Then
            'Copia la fila entera y la pega.
            Range(Cells(i, "A"), Cells(i, "U")).Copy Destination:=KPIdestino.Range("A" & j)
            ' Aumenta la variable para que cuando encuentre una nueva fila con la condicion me la copie
            j = j + 1
        End If
    Next
'Guarda los cambios y cierra el libro    
Workbooks("Autorizaciones.xlsm").Close SaveChanges:=True
Application.CutCopyMode = False
Application.DisplayAlerts = True

End Sub

buena semana para todos!

 

Para mi el tema esta cerrado! besos!

Link to comment
Share on other sites

  • Crear macros Excel

  • Posts

    • La parte de intercalar no la había captado Adjunto de nuevo mi método Espero ahora si, quede listo   Saludos! Mover filas filtradas otra hoja_GP.xlsm
    • Buenas noches nuevamente a los Foristas. A sugerencia de JSD  de los problemas que le planteaba sobre el formulario, abro un nuevo tema. Ofrezco disculpas porque realmente es así como debe ser. El tema es el siguiente: Tengo en este formulario otros problemas que quizás puedan ayudarme: realmente he tratado de ver dónde está el error, pero mis conocimientos no alcanzan y ustedes son los MAESTROS. 1.- En el FrmPersonal trabajo lo que es el listado de Personal con todos los datos y las Nóminas de Salario. En la parte de las nóminas (LstNomina) ya lo configuré de tal manera que con el evento DobleClick pueda traer cualquier trabajador y poder modificar algún dato que por error se haya introducido. Este trabaja Bien, pero en el LstPersonal, estoy tratando de hacer lo mismo y no me está queriendo tomar los datos para su modificación. No me da error, pero no lo hace y he buscado, pero no encuentro el posible problema. 2.- En este mismo Formulario (FrmPersonal), no acabo de poner bien el código VBA para los OptionButton de Sexo. 3.- En este Proyecto también tengo o quiero en el FrmBuscarEntradas poder modificarlo y que a través de un ComboBox o de Botones de Opción poder hacer la búsqueda no sólo de las Entradas, sino también de las Salidas y la Existencia. Esto para evitarme tener que hacer uno para cada uno y reducir los Formularios. ¿Podrías ayudarme con estos temas? Un abrazo a todos. Espero puedas ayudarme y excelente semana para todos. Un abrazo caluroso y cordial. Pino.   Mi Negocio Foro.xlsm
    • Buenas Noches a todos los Foristas. Gracias JSD por su aporte. Revisaré dónde estaba el problema para evitar el mismo error en lo adelante y aprender. Gracias a los demás miembros del Foro también. Tema cerrado.
    • Hola, Gerson. Pues es que solo se mueven todas las salidas de golpe tanto si filtras a mano como si no y todos las referencias de producto a la vez de salidas. No es el ejemplo 2.. no sé... pensaba que la pregunta era clara y tendría fácil solución. El código de mi ejemplo es super sencillo y lo he explicado paso a paso en la macro. En el ejemplo 1 funciona y en el ejemplo 2 es exactamente igual solo que los registros están filtrados.  Comienzo siempre con una salida y luego se van alternando (una entrada, una salida... hay condiciones) hasta que ya no quedan datos en las hojas. Primero para Referencia 1 (filtrada). La idea es al terminar quitar el filtro y hacer lo mismo para referencia 2 (como en el ejemplo 1 que funciona). Gracias.  
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy