Reset filtre a la fermeture

Bonjour,

Problème simple mais je ne trouve pas la solution.

J'ai des tableaux dans différentes feuilles, que l'on peut trier et filtrer.

J'aimerais rajouter a ma ligne de code qui verrouille mes feuilles avant de fermer le fichier, une ligne de code qui Reset les filtres des tableaux.

J'ai essayé en vain avec le code suivant:

    Sheets("Procéd").Select
    On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
    ActiveSheet.Protect ("mdp"), DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True

Je n'ai pas d'erreur mais cela ne fonctionne pas.

Une idée ?

merci d'avance !

Bonjour,

Pour l'écrire un peu plus correctement...

    With Worksheets("Procéd")
        If .FilterMode Then .ShowAllData
        .Protect "mdp", True, True, True, AllowSorting:=True, AllowFiltering:=True
    End With

Pour voir ce qui ne va pas, il faut voir le classeur...

Bonjour,

J'ai testé avec votre code toujours pas d'erreur mais cela ne fonctionne pas...

J'ai mis le classeur.

59doc-test.zip (910.98 Ko)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.ScreenUpdating = False
    With Worksheets("Procéd")
        .Unprotect "iso"
        If .FilterMode Then .ShowAllData
        .Protect "iso", True, True, True, AllowSorting:=True, AllowFiltering:=True
    End With
    '[...]

A poursuivre sur ce modèle pour le reste de la procédure... T'en inspirer pour faire disparaître tous les Select, et alléger les expressions...

Cordialement.

Merci ,

Mais oui il y a un mais

Je ferme le doc je sauvegarde... je l'ouvre a nouveau les filtres sont toujours la..

en exemple dans l'onglet procéd, ne cochez que la case Achat fermez et rouvrez le doc en ayant modifié le code comme ci dessous.

    Sheets("Procéd").Select
With Worksheets("Procéd")
        .Unprotect "iso"
        If .FilterMode Then .ShowAllData
        .Protect "iso", True, True, True, AllowSorting:=True, AllowFiltering:=True
    End With
    Sheets("Instru").Select
    With Worksheets("Instru")
        .Unprotect "iso"
        If .FilterMode Then .ShowAllData
        .Protect "iso", True, True, True, AllowSorting:=True, AllowFiltering:=True
    End With

    Sheets("Formu").Select
       With Worksheets("Formu")
        .Unprotect "iso"
        If .FilterMode Then .ShowAllData
        .Protect "iso", True, True, True, AllowSorting:=True, AllowFiltering:=True
    End With

    Sheets("Feuil2").Select
    With Worksheets("Feuil2")
        .Unprotect "iso"
        If .FilterMode Then .ShowAllData
        .Protect "iso", True, True, True, AllowSorting:=True, AllowFiltering:=True
    End With

'retour à la page d'accueil

Sheets("Accueil").Select
Range("a1").Select
ActiveWindow.DisplayWorkbookTabs = False
Application.ScreenUpdating = True

    End Sub

Toujours le filtre actif quand je retourne dans l'onglet procéd..

Pas chez vous ?

Ta procédure étant l'évènement BeforeSave, il te suffit d'enregistrer pour constater que ton tableau est défiltré !


NB- Décidément, c'est dur de faire renoncer aux Select ! Supprimer ces parasites, c'est pourtant simple !

Re,

J'ai testé avec ce code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Application.ScreenUpdating = False
    With Worksheets("Procéd")
        .Unprotect "iso"
        If .FilterMode Then .ShowAllData
        .Protect "iso", True, True, True, AllowSorting:=True, AllowFiltering:=True
    End With

'retour à la page d'accueil

ActiveWindow.DisplayWorkbookTabs = False
Application.ScreenUpdating = True

    End Sub

Auparavant j’applique un filtre dans l'onglet procèd sur la colonne service en ne cochant que "commerce" par exemple.

J'enregistre et je constate que le filtre reste affiché il n'y a que 'commerce" et non les autres services qui s'affichent^, même en ferment et rouvrant le fichier "doc test."

Un éclaircissement ? peut être ? je m'excuse du dérangement..

Je ne peux que te confirmer que je constate le contraire dans les mêmes conditions : le défiltrage est immédiat.

Au constat que chez moi cela ne fonctionne pas... la solution donnée par Fernand.

J'ai trouvé une autre solution pour les intéressés celle-ci fonctionne pour moi :

ActiveSheet.ListObjects("procédure").Range.AutoFilter Field:=1

Ps: Désolé pour les ".select" ^^

Merci encore

Bonjour,

Une participation tardive à la question posée.

Cordialement.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ws As Worksheet

    Application.ScreenUpdating = False
    For Each ws In ThisWorkbook.Worksheets
        Select Case ws.Name
            Case "Procéd", "Instru", "Formu", "Feuil2"
                With ws
                    .Unprotect Password:="iso"
                    If .ListObjects(1).AutoFilter.FilterMode Then _
                       .ListObjects(1).AutoFilter.ShowAllData
                    .Protect Password:="iso", _
                             AllowSorting:=True, _
                             AllowFiltering:=True
                End With
            Case Else
                '
        End Select
    Next ws
    With ThisWorkbook.Worksheets("Accueil")
        .Activate
        .[A1].Select
    End With
    ActiveWindow.DisplayWorkbookTabs = False

End Sub
Jean-Eric a écrit :

Bonjour,

Une participation tardive à la question posée.

Cordialement.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ws As Worksheet

    Application.ScreenUpdating = False
    For Each ws In ThisWorkbook.Worksheets
        Select Case ws.Name
            Case "Procéd", "Instru", "Formu", "Feuil2"
                With ws
                    .Unprotect Password:="iso"
                    If .ListObjects(1).AutoFilter.FilterMode Then _
                       .ListObjects(1).AutoFilter.ShowAllData
                    .Protect Password:="iso", _
                             AllowSorting:=True, _
                             AllowFiltering:=True
                End With
            Case Else
                '
        End Select
    Next ws
    With ThisWorkbook.Worksheets("Accueil")
        .Activate
        .[A1].Select
    End With
    ActiveWindow.DisplayWorkbookTabs = False

End Sub

Solution Propre Merci

Rechercher des sujets similaires à "reset filtre fermeture"