De: Laurent Longre Objet: Re: Filtre automatique Date : mercredi 19 avril 2000 17:35 Jacky a écrit : Est il possible d'intercepter le changement de critère d'un filtre de façon automatique ? Oui, à deux conditions : 1) Le mode de calcul doit être sur "automatique" 2) Ton classeur doit comporter au moins une fonction volatile dans une cellule, comme ALEA, INDIRECT, MAINTENANT, etc. Par exemple, pour intercepter chaque changement dans le filtre de la feuille "Feuil1": - Mets par exemple la formule =ALEA() dans une cellule quelconque d'une feuille de calcul vide du classeur, que tu peux masquer. - Copie le code suivant dans le module ThisWorkbook : Dim PlagePrec As Range Private Sub Workbook_Open() set PlagePrec = PlageSource End Sub Private Sub Workbook_SheetCalculate(ByVal Sh As Object) Dim PlageNouv As Range Dim NbCells As Long set PlageNouv = PlageSource NbCells = Intersect(PlagePrec, PlageNouv).Count If NbCells <> PlagePrec.Count Or NbCells <> PlageNouv.Count Then MsgBox "Changement du filtre" set PlagePrec = PlageNouv End If End Sub Private Function PlageSource() As Range set PlageSource = Sheets("Feuil1").AutoFilter.Range _ .SpecialCells(xlCellTypeVisible) End Function > Peut-on connaître le numéro de la première et la dernière ligne trouvé > après application d'un critère de filtre auto ? Dim PremLigne As Long, DerLigne As Long With Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible) If .Areas.Count = 1 Then PremLigne = .Rows(2).Row _ Else PremLigne = .Areas(2).Row DerLigne = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Row MsgBox "Première ligne visible : " & PremLigne MsgBox "Dernière ligne visible : " & DerLigne End With Cordialement, Laurent