Variable = Dernière cellule colonne filtrée

Bonjour,

J'aimerais savoir de quelle manière il est possible de stocker dans une variable, la derniere cellule de la colonne filtrée "m" ?

En vous remerciant pour votre aide

Bonjour,

Une piste :

Sub Test()

    Dim Plage As Range
    Dim Ligne As Long
    Dim Critere

    Critere = "Ta valeur" 'adapter le critère

    With Worksheets("Feuil1") 'adapter le nom de la feuille

        'sur la colonne M
        Set Plage = .Range(.Cells(1, 13), .Cells(Rows.Count, 13).End(xlUp))

        Plage.AutoFilter 1, "=" & Critere

        For Ligne = Plage.Count To 1 Step -1

            If Plage(Ligne).EntireRow.Hidden = False Then Exit For

        Next Ligne

        Plage.AutoFilter

        MsgBox Ligne '<--- dernière ligne du filtrage dans la variable "Ligne"

    End With

End Sub

Bonjour,

Merci pour cette réponse rapide.

En faite je voudrais stocker dans une variable la dernière valeur visible :

Je pensais à : Range("M1:M" & Cells(Rows.Count, "M").End(xlUp).Row).Value mais celle-ci ne fonctionne pas

Qu'en penses-tu ?

Merci pour ton aide

Re,

Les valeurs de la dernière ligne visible dans une variable Range :

Sub Test()

    Dim Plage As Range
    Dim PlgResult As Range
    Dim Cel As Range
    Dim Mess As String
    Dim Ligne As Long
    Dim Critere

    Critere = "Ta valeur" 'adapter le critère

    With Worksheets("Feuil1") 'adapter le nom de la feuille

        Set Plage = .Range(.Cells(1, 13), .Cells(Rows.Count, 13).End(xlUp))

        Plage.AutoFilter 1, "=" & Critere

        For Ligne = Plage.Count To 1 Step -1

            If Plage(Ligne, 13).EntireRow.Hidden = False Then Exit For

        Next Ligne

        'défini la plage de Ax à Mx (x = Ligne)
        Set PlgResult = .Range(.Cells(Ligne, 1), .Cells(Ligne, 13))

        'concatène pour l'exemple et affiche les valeurs dans la boite de message
        For Each Cel In PlgResult: Mess = Mess & Cel.Value & vbCrLf: Next Cel

        Plage.AutoFilter

    End With

    MsgBox Mess

End Sub

Bonjour Polak6, Theze,

je propose ce fichier Excel :

81exo-polak6.xlsm (14.81 Ko)

dhany

Bonjour,

Merci pour votre aide. Je vous avouerai que je ne suis pas arrivé à faire fonctionner cette ligne sur mon fichier. Du coup je suis passé par quelque chose de moins propre mais qui fonctionne :

Range("M65000").Select

Selection.End(xlUp).Select

Selection.End(xlUp).Select

nom = ActiveCell.Value

D'autre part, dans le cadre de mon cadre, j'utilise ce bout de code pour copier les données de plusieurs cellules filtrées, mais j'ai l'impression que celui-ci n'est pas optimisé :

Windows("Mon_Fichier").Activate

Sheets("Feuil1").Range("M16:m65000").SpecialCells(xlCellTypeVisible).Copy

Windows(nom).Activate

Sheets("Feuil1").Select

Range("A1").Select

ActiveSheet.Paste

Windows("Mon_Fichier").Activate

Sheets("Feuil1").Range("a16:a65000").SpecialCells(xlCellTypeVisible).Copy

Windows(nom).Activate

Sheets("Feuil1").Select

Range("B1").Select

ActiveSheet.Paste

Bonjour à tous

un autre exemple ... permettant d'obtenir la dernière ligne visible avec un filtre

exemple fais sur la colonne M (exemple pris sur le fichier de Dhany

   DerLig = Range("M:M").Find("*", , , , xlByRows, xlPrevious).Row

Fred

Rechercher des sujets similaires à "variable derniere colonne filtree"