Macro para buscar información en distintas pestañas y pegar datos en otra hoja
Tengo un archivo que tiene esta pantalla para buscar información de unos productos:
Yo ingreso el código A.F. Y la sociedad está en una lista desplegable y me llena todos los demás datos. Entre ellos está el Expediente de A.F. Yo hice una macro que cuando le doy listar AF del expediente, en la parte de abajo me trae todos los demás códigos que están en ese mismo expediente junto con el que ingresé en la búsqueda. La macro me funciona bien, solo que quiero hacerla más optima ya que por mi poco conocimiento de VBA la hice muy engorrosa, entonces quisiera saber de una manera para simplificarla.
Lo que quiero hacer es esto: tengo 4 hojas con bases de datos que tienen los mismos campos pero para cada sociedad, prácticamente todos los datos que se muestran en la pantalla que anexe. Cuando yo seleccione la sociedad y el código, me busque en la hoja que corresponde a la sociedad el numero del expediente y me traiga los datos que se muestran en la tabla de abajo. Pero hay 2 detalles, 1 cuando en status dice "De Baja" hay otro número de expediente que está en otra columna, ejemplo el número de expediente está en la F, el numero de expediente "de baja" está en la M. El segundo es que quiero que los datos que trae solo traiga código, serie y descripción, cuando llegue a 40, siga en las columnas de al lado, cuando vuelva a llegar a 40, continúe debajo de los primeros 40 y así, puede que no pase de 40 los códigos o puede que sean más de 40.
Yo hice algo que es lo que me puso el archivo pesado y era que tenia formulada una hoja llamada control donde me traía todo los que metía en las otras 4 hojas y básicamente la macro que hice, filtraba de esa hoja los datos que quería y las pegaba en otra hoja llamada datos del filtrado y tenia formulado la pantalla inicial para que me trajera todos los datos pero ahora el archivo pesa un montonón.
Esta es la macro
Sub Listar_Exp() ' Listar_Exp Macro Application.ScreenUpdating = False Criterio1 = [C10] Sheets("Datos de Filtrado").Select Range("A2").Select ActiveCell.Rows("1:600").EntireRow.Select Selection.ClearContents ActiveCell.Select Sheets("Buscador de Datos").Select If Criterio1 = "De Baja" Then Sheets("Control").Select ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=15 ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=18, Criteria1:=Sheets("Buscador de Datos").Range("k3") Sheets("Buscador de Datos").Select Else Sheets("Control").Select ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=18 ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=15, Criteria1:=Sheets("Buscador de Datos").Range("k3") Sheets("Buscador de Datos").Select End If Sheets("Control").Select Range("D2").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.Copy Sheets("Datos de Filtrado").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Control").Select Range("K2").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.Copy Sheets("Datos de Filtrado").Select Range("b2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Control").Select Range("E2").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.Copy Sheets("Datos de Filtrado").Select Range("C2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Buscador de Datos").Select Range("C3:F3").Select Application.ScreenUpdating = True End Sub