XL 2016 Dernière valeur d'une colonne filtrée

Claudy

XLDnaute Impliqué
Bonjour à tous ,
je voudrais afficher en B1, la valeur de ma colonne B3:B500 filtrée...
un peu dans le genre :

Function derlig(col As String)
derlig = Range(col & Range(col & "65536").End(xlUp).Row)
End Function

Mais cette fonction me donne la dernière valeur de la colonne....avec ou sans filtre.

Merci d'avance,
Claudy
 

djidji59430

XLDnaute Accro
Bonjour,

C'est la ligne de la derniere valeur que tu filtres.

Si tu filtres "a", c'est

max(si(b3:b500="a";ligne(b3:b500)))
en matricielle
 

Claudy

XLDnaute Impliqué
Re bonjour...
avec ceci:
Function derlig(col As String)
derlig = Range("B500").End(xlUp).Value
End Function

ça va de temps en temps mais le calcul ne se fait pas automatiquement...

Une idée?
merci
 

youky(BJ)

XLDnaute Barbatruc
Bonjour Claudy,
avec une boucle
VB:
For k = [B5000].End(3).Row To 3 Step -1
If Rows(k).Hidden = False Then [B1] = Cells(k, 2): Exit For
Next
Bruno
 

Claudy

XLDnaute Impliqué
Bonjour Claudy,
avec une boucle
VB:
For k = [B5000].End(3).Row To 3 Step -1
If Rows(k).Hidden = False Then [B1] = Cells(k, 2): Exit For
Next
Bruno
Ok merci mais j'ai fait avec ceci:
Sub filtre()
On Error Resume Next
If ActiveCell.Value = "" Then
Exit Sub
End If
If Range("H1") = "" Then
Range("H1") = ActiveCell.Value
Selection.AutoFilter
ActiveSheet.Range("$A$2:$F$11").AutoFilter Field:=2, Criteria1:=ActiveCell.Value
Else
ActiveSheet.Range("$A$2:$F$500").AutoFilter Field:=2
Range("H1") = ""
End If
End Sub

A+
Claudy
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Une proposition pour identifier la dernière ligne filtrée
VB:
Sub DerniereLigneFiltree()
Dim t
With ActiveSheet.AutoFilter.Range
    On Error Resume Next
    t = Split(.Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Cells.SpecialCells(12).Address, "$")
    On Error GoTo 0
End With
mess = "Numéro de la dernière ligne filtrée: " & t(UBound(t)) & Chr(13)
mess = mess & "Adresse Cellule: " & Cells(t(UBound(t)), "A").Address(0, 0) & Chr(13)
mess = mess & "Valeur de la Cellule: " & Cells(t(UBound(t)), "A").Value
MsgBox mess
End Sub
NB: Si on veut la colonne B, on remplace A par B dans le code
 

Discussions similaires


Haut Bas