Visual Basic para Aplicaciones - Filtro Excel des código

Life is soft - evento anual de software empresarial
   
Vista:

Filtro Excel des código

Publicado por José (12 intervenciones) el 19/11/2013 21:24:32
Hola,
tengo un problema con los filtros.
Rengo una hoja con digamos 500 filas.
Filtro estas filas y el filtro me da digamos 12
Quiero recuperar los datos de estas filas mediante código para hacer unos calculos pero no sé como.
La recuperación empieza en la fila 2, pero las filas no se siguen.




Como podeis ver la primera fila es bien 2 pero las otras no se siguen y deberias ser 3,4,5,... o bien como puedo recuperar esas filas mediante código?

El objeto es poder filtrar por tantos valores distintos como se encuentres en la columna B.
Esto en realidad es para poder simular una tabla maestro/detalle de Access.
Tengo una hoja que es la parte maestro de Access y otra detalle que es la que muestro en el post y que es la parte detalle de Acccess.
La primera hoja no tiene filtro aplicado, pero si la segundo y funciona. Esta filtro lo aplico desde código.Me grabé la macro y la introduje en mi código con las modificaciones correspondientes.
Una vez aplicado el filtro tengo que copiar los datos que aparecen en ciertas columnas y llevarmelos a un formulario. El problema es que se donde tengo que enpezar (celda A2 o sea fila 2) pero despues no se como referenciar las otras filas pues de un filtro a otro cambian, pues me doy cuenta que los numeros de filas son los que se tienen en la hoja sin filtrar y yo necesito esos numeros de fila para recuperar los datos en los diferentes rangos.
Naturalmente puedo recorrar toda la hoja y solo copiar los datos correpondientes a la clave de filtro.
Si encuentro la clave pues ya estoy en la fila y copio, pero pienso que eso me consumirá mas tiempo en recorrer 10000 filas que en recorrer 20 filas.
Repito tengo 2 hojas con datos (H1 y H2), A cada fila de la hoja H1 le corresponden entre 10 y 20 filas de la hoja H2 cuya direccion no se conoce de antemano. Yo quiero recuperar por código esos datos de la hoha H2.
el código que tengo para el filtro y el orden es el siguiente:

Else
Select Case SAISIE.DISCIPLINE
Case "T": Sheets("AT").Activate
Case "P": Sheets("AP").Activate
Case "O": Sheets("AO").Activate
Case Else
Beep
MsgBox "Il faut choisir une discipline"
SAISIE.DISCIPLINE.SetFocus
Exit Sub
End Select
End If
'**********************************Filtre
'La hoha crece y el rango no puede ser fijo
NextRow = Application.WorksheetFunction.CountA(Range("A:A"))
'Aquí probablement me baste con S = "A2:A" & Trim$(Str$(NextRow))
S = "A2:CR" & Trim$(Str$(NextRow))
Selection.AutoFilter
ActiveSheet.Range(S).AutoFilter Field:=2, Criteria1:=SAISIE.IDACTIVEGP.Value
Range("C2").Select
ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("C2"), SortOn _
:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.ActiveSheet.Sort
.SetRange Range(S)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
gracias anticipadas
José
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder