sauvegarde du critère de filtrage d’une colonne

Francis

XLDnaute Junior
Bonsoir le forum
Je cherche à sauvegarder le critère de filtrage d’une colonne, afin de le retrouver à la fin de la macro, pour restituer l’affichage original.
J’ai pondu ces quelques lignes et cela coince...Ca marche sauf dans le cas où il n’y a pas de filtre enclenché, cela filtre sur la première donnée de la colonne

With ActiveSheet.AutoFilter.Range.Columns(6)
Adr = .Cells(1).Address
Set C = .Columns(1).Find("*")
critérial1 = C
End With
With Worksheets("Feuil1")
If .FilterMode = True Then .ShowAllData
‘Bla blabla…etc
End With
Selection.AutoFilter Field:=6, Criteria1:=C


Je me suis remis au travail
With Worksheets("Feuil1")
If .AutoFilterMode Then
With .AutoFilter.Filters(6)
If .On Then c6 = .Criteria1
End With
End If
End With

With Worksheets("Feuil1")
If .FilterMode = True Then .ShowAllData
‘Bla blabla…etc
End With
Selection.AutoFilter Field:=6, Criteria1:=c6
Ca marche sauf dans le cas où il n’y a pas de filtre enclenché, la variable Criteria1 retourne « vide » et toutes les lignes sont cachées.
Quelqu’un aurait-il une autre idée ?
Merci d’avance
Francis
 

fred65200

XLDnaute Impliqué
Re : sauvegarde du critère de filtrage d’une colonne

je crois avoir trouvé ce code dans l'aide
Code:
Sub SupprimerEtRemettreFiltre()
'Dim TABFILTRE()
'Application.StatusBar = "Stockage des critères de filtrage..."
Set W = Worksheets("DONNÉES")
With W.AutoFilter
    ZONEFILTRE = .Range.Address
    With .Filters
        ReDim TABFILTRE(1 To .Count, 1 To 3)
        For F = 1 To .Count
            With .Item(F)
                If .On Then
                    TABFILTRE(F, 1) = .Criteria1
                    If .Operator Then
                        TABFILTRE(F, 2) = .Operator
                        TABFILTRE(F, 3) = .Criteria2
                    End If
                End If
            End With
        Next
    End With
    For i = 1 To .Filters.Count
        If Not TABFILTRE(i, 1) = "" Then .Range.AutoFilter FIELD:=i
    Next
End With
Application.StatusBar = "Critères de filtrage stockés...Filtres enlevés..."

'Ici  tu mets le code que tu veux

'Application.StatusBar = "Rétablissement des filtres..."
For Col = 1 To UBound(TABFILTRE(), 1)
    If Not IsEmpty(TABFILTRE(Col, 1)) Then
        If TABFILTRE(Col, 2) Then
            W.Range(CURRENFILTRANGE).AutoFilter FIELD:=Col, _
                Criteria1:=TABFILTRE(Col, 1), Operator:=TABFILTRE(Col, 2), _
                Criteria2:=TABFILTRE(Col, 3)
        Else
            W.Range(ZONEFILTRE).AutoFilter FIELD:=Col, _
                Criteria1:=TABFILTRE(Col, 1)
        End If
    End If
Next
Application.StatusBar = "Critères de filtrage rétablis..."
End Sub

Recherche AutoFilter dans l'aide F1
 

Discussions similaires

Réponses
11
Affichages
486

Statistiques des forums

Discussions
312 498
Messages
2 088 996
Membres
104 001
dernier inscrit
dessinbecm