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

VB XL2007 plage filtrée

7 réponses
Avatar
le Nordiste
Bonjour,

Je d=E9sire connaitre la ligne visible haute et la ligne visible basse
apr=E9s application d'un filtre.
Les lignes visibles sont souvent sur plusieurs "areas".

Plus pr=E9cis=E9ment apr=E9s le filtre je veux porter dans une seule colonn=
e
de ces lignes visibles une formule.
Et cela coince !

Merci d evotre aide.

7 réponses

Avatar
DanielCo
Bonjour, la macro suivante affiche l'adresse de chaque plage :

Sub test()
Set plage = ActiveSheet.AutoFilter.Range.Offset(1)
Set plage = plage.Resize(plage.Rows.Count - 1)
Set plage = plage.SpecialCells(xlCellTypeVisible)
For i = 1 To plage.Areas.Count
MsgBox plage.Areas(i).Address
Next
End Sub

Cordialement.
Daniel

le Nordiste a écrit
Bonjour,

Je désire connaitre la ligne visible haute et la ligne visible basse
aprés application d'un filtre.
Les lignes visibles sont souvent sur plusieurs "areas".

Plus précisément aprés le filtre je veux porter dans une seule colonne
de ces lignes visibles une formule.
Et cela coince !

Merci d evotre aide.
Avatar
le Nordiste
MERCI ça marche,
reste plus qu'à extraire le numéro de la ligne haute et basse de
chaque "area"
Avatar
le Nordiste
On 31 mar, 09:52, le Nordiste wrote:
MERCI    ça marche,
reste plus qu'à extraire le numéro de la ligne haute et basse de
chaque "area"



Et je n'y arrive pas facilement :

une aide serait bienvenu.
Avatar
DanielCo
Sub test()
Set plage = ActiveSheet.AutoFilter.Range.Offset(1)
Set plage = plage.Resize(plage.Rows.Count - 1)
Set plage = plage.SpecialCells(xlCellTypeVisible)
For i = 1 To plage.Areas.Count
Haut = plage.Row
Bas = plage.Row + plage.Rows.Count - 1
MsgBox Haut
MsgBox Bas
Next
End Sub




On 31 mar, 09:52, le Nordiste wrote:
MERCI    ça marche,
reste plus qu'à extraire le numéro de la ligne haute et basse de
chaque "area"



Et je n'y arrive pas facilement :

une aide serait bienvenu.
Avatar
isabelle
bonjour le Nordiste,

Sub Filtre_PremiereEtDerniere()
Dim plg As Range, x As Variant, pr As String, dr As String
Set plg =
ActiveSheet.Range("_filterdatabase").SpecialCells(xlCellTypeVisible)
x = Split(plg.Address, ",")
If Range(x(0)).Count > 1 Then
pr = Range(Split(x(0), ":")(1)).Row ' premiere ligne filtrer
dr = Range(x(UBound(x))).Row ' derniere ligne filtrer
Else
pr = Range(x(1)).Row ' premiere ligne filtrer
dr = Range(x(UBound(x))).Row ' derniere ligne filtrer
End If
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-31 04:43, le Nordiste a écrit :
On 31 mar, 09:52, le Nordiste wrote:

MERCI ça marche,
reste plus qu'à extraire le numéro de la ligne haute et basse de
chaque "area"



Et je n'y arrive pas facilement :

une aide serait bienvenu.

Avatar
MichD
Bonjour,

En supposant que le filtre a été exécuté en Feuil1...

'----------------------------------
Sub test()
Dim Rg As Range
Dim PremièreLigne As Long
Dim DernièreLigne As Long

With Worksheets("Feuil1")
Set Rg = .Range("_FilterDatabase")
End With
Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1) _
.SpecialCells(xlCellTypeVisible)

With Rg.Areas
PremièreLigne = Range(.Item(1).Address). _
Cells(1, 1).Row
DernièreLigne = Range(.Item(.Count).Address). _
Cells(.Item(.Count).Rows.Count, 1).Row
End With
End Sub
'----------------------------------



MichD
--------------------------------------------
"le Nordiste" a écrit dans le message de groupe de discussion :


Bonjour,

Je désire connaitre la ligne visible haute et la ligne visible basse
aprés application d'un filtre.
Les lignes visibles sont souvent sur plusieurs "areas".

Plus précisément aprés le filtre je veux porter dans une seule colonne
de ces lignes visibles une formule.
Et cela coince !

Merci d evotre aide.
Avatar
isabelle
correction,

Sub Filtre_PremiereEtDerniere()
Dim plg As Range, x As Variant, pr As String, dr As String
Set plg =
ActiveSheet.Range("_filterdatabase").SpecialCells(xlCellTypeVisible)
x = Split(plg.Address, ",")
If Range(x(0)).Rows.Count > 1 Then
pr = "2" ' premiere ligne filtrer
dr = Range(x(UBound(x))).Row ' derniere ligne filtrer
Else
pr = Range(x(1)).Row ' premiere ligne filtrer
dr = Range(x(UBound(x))).Row ' derniere ligne filtrer
End If
End Sub


isabelle
------------------------------------------------------------------

Le 2011-03-31 09:17, isabelle a écrit :
bonjour le Nordiste,

Sub Filtre_PremiereEtDerniere()
Dim plg As Range, x As Variant, pr As String, dr As String
Set plg =
ActiveSheet.Range("_filterdatabase").SpecialCells(xlCellTypeVisible)
x = Split(plg.Address, ",")
If Range(x(0)).Count > 1 Then
pr = Range(Split(x(0), ":")(1)).Row ' premiere ligne filtrer
dr = Range(x(UBound(x))).Row ' derniere ligne filtrer
Else
pr = Range(x(1)).Row ' premiere ligne filtrer
dr = Range(x(UBound(x))).Row ' derniere ligne filtrer
End If
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-31 04:43, le Nordiste a écrit :
On 31 mar, 09:52, le Nordiste wrote:
MERCI ça marche,
reste plus qu'à extraire le numéro de la ligne haute et basse de
chaque "area"


Et je n'y arrive pas facilement :

une aide serait bienvenu.