Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Activecell.offset sur un filtre

1 réponse
Avatar
Shewy_FR_34
Bonjour =E0 tous.

Je rencontre un prob que je n'avais pas anticip=E9 !

Jai cette petite macro :

-------------------------------------------------------
Range("B1").Select
ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=3D2,=20
Criteria1:=3DNB_SUPPORT

'On recherche dans la colone H la plus grande valeur des nombres=20
positifs pour un support donn=E9.

Range("H1").Select

val_max =3D 0
ref_ligne =3D ""

While ActiveCell.Offset(1, 0).Value > 0
ActiveCell.Offset(1, 0).Select

If Val(ActiveCell.Value) > 0 Then

If Val(ActiveCell.Value) > val_max Then
val_max =3D Val(ActiveCell.Value)
ref_ligne =3D ActiveCell.Address
End If
Else
'MsgBox "valeur NEGATIVE"

End If

Wend

Range(ref_ligne).Select
LIGNE =3D ActiveCell.Row
Range("E" & LIGNE & ":N" & LIGNE).Select
Selection.Copy
-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des=20
lignes filtr=E9es ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules=20
uniquement affich=E9 grace au filtre ?

Merci de votre aide !

1 réponse

Avatar
isabelle
bonjour Shewy,

en utilisant la fonction SOUS.TOTAL et EQUIV c'est moins compliqué,

Set plg = Range("B1:B" & Range("B65536").End(xlUp).Row)
x = Application.Subtotal(4, plg)
LIGNE = Application.Match(x, plg, 0)
Range("E" & LIGNE & ":N" & LIGNE).Select

isabelle
__________________________________________________________

Le 2010-05-23 11:20, Shewy_FR_34 a écrit :Bonjour à tous.

Je rencontre un prob que je n'avais pas anticipé !

Jai cette petite macro :

-------------------------------------------------------
Range("B1").Select
ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=2,
Criteria1:=NB_SUPPORT

'On recherche dans la colone H la plus grande valeur des nombres
positifs pour un support donné.

Range("H1").Select

val_max = 0
ref_ligne = ""

While ActiveCell.Offset(1, 0).Value > 0
ActiveCell.Offset(1, 0).Select

If Val(ActiveCell.Value) > 0 Then

If Val(ActiveCell.Value) > val_max Then
val_max = Val(ActiveCell.Value)
ref_ligne = ActiveCell.Address
End If
Else
'MsgBox "valeur NEGATIVE"

End If

Wend

Range(ref_ligne).Select
LIGNE = ActiveCell.Row
Range("E" & LIGNE & ":N" & LIGNE).Select
Selection.Copy
-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des
lignes filtrées ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules
uniquement affiché grace au filtre ?

Merci de votre aide !