Filtre automatique

Bonjour à tous.

J'ai écrit une procédure qui permet d'indiquer pour chaque colonne filtrée, la valeur du filtre. Cela fonctionne bien, mais pas en automatique (Je suis obligé d'avoir recours à un bouton dans la barre d'outils qui actionne une macro). Je cherche à rendre cette macro automatique, c'est à dire à chaque changement du filtre. Cela est-il possible, et comment ?

Ci- dessous le code que j'ai écrit.

Dim f As Filter

Dim w As Worksheet

Sub Filtre()

Set w = ActiveSheet

If w.AutoFilterMode Then

With w.AutoFilter

currentFiltRange = .Range.Address

MaCol = Range(currentFiltRange).Column

NbCol = Range(currentFiltRange).Columns.Count

MaLigne = Range(currentFiltRange).Row

If MaLigne = 1 Then

Rows("1:1").Select

Selection.Insert Shift:=xlDown

currentFiltRange = .Range.Address

MaLigne = Range(currentFiltRange).Row

End If

' For i = 0 To (NbCol - 1)

For Each f In w.AutoFilter.Filters

' With .Filters()

If f.On Then

c1 = f.Criteria1

If f.Operator <> 0 Then

c2 = f.Criteria2

If f.Operator = 1 Then

op = "ET"

Else

op = "OU"

End If

Range(Cells(MaLigne - 1, MaCol), Cells(MaLigne - 1, MaCol)).Formula = "'" & c1 & " " & op & " " & c2

Range(Cells(MaLigne - 1, MaCol), Cells(MaLigne - 1, MaCol)).Font.ColorIndex = 3

Else

Range(Cells(MaLigne - 1, MaCol), Cells(MaLigne - 1, MaCol)).Formula = "'" & c1

Range(Cells(MaLigne - 1, MaCol), Cells(MaLigne - 1, MaCol)).Font.ColorIndex = 3

End If

Else

Range(Cells(MaLigne - 1, MaCol), Cells(MaLigne - 1, MaCol)).Clear

End If

MaCol = MaCol + 1

Next

End With

' Range(Cells(MaLigne - 1, MaCol), Cells(MaLigne - 1, MaCol + NbCol - 1)).Font.ColorIndex = 3

Else

Range(Cells(MaLigne - 1, MaCol), Cells(MaLigne - 1, MaCol + NbCol - 1)).Clear

Exit Sub

End If

If w.AutoFilterMode Then

With w.AutoFilter

End With

Else

Range("B1:B1").Clear

End If

End Sub

Merci d'avance.

Bonjour,

ton code ne nous avance pas, envoie ton fichier raccourçi !

Amicalement

Claude.

Bonsoir.

En fait c'est un fichier d'essai pour mettre au point cet outil.

https://www.excel-pratique.com/~files/doc2/filtre_automatique.xls

Merci de regarder.

11aaaa.zip (105.41 Ko)

Bonsoir

regarde ceci.

mais aprés avoir changé le filtre, il faut quand même cliquer dans une cellule (n'importe laquelle)

https://www.excel-pratique.com/~files/doc2/filtre_automatique_2_.xls

Cordialement

re,

je n'utilide jamais ce genre de filtre, essaye celui-là (filtre élaboré)

https://www.excel-pratique.com/~files/doc2/Filtrage.xls

Claude.

Merci à tous les deux pour votre aide.

Pour maguetlolo : Je suis déja passé par cette étape, mais elle ne me convient pas, car il faut changer de cellule pour activer la macro.

Pour Claude : Ton code est intéressant, mais pour mon application il ne convient pas car en fait, j'ai environ 300 fichiers qui utilisent le filtre automatique pour lesquels je voudrais appliquer ce que je veux faire.

Cependant, j'y ai travaillé cette nuit et je pense avoir trouver la solution.

Au lieu d'utiliser l'évènement "Worksheet_SelectionChange" de maguetlolo, j'utilise l'évènement "Worksheet_Calculate()" qui s'active dès que Excel recalcule les cellules. Cela impose d'avoir une formule dans une cellule (L1C2) qui oblige Excel à recalculer et donc à lancer la macro.

Je vous joins le fichier modifié

https://www.excel-pratique.com/~files/doc2/filtre_automatique_2.xls

Encore merci à tous.

Rechercher des sujets similaires à "filtre automatique"