Microsoft 365 mémoriser et restituer l'affichage d'une feuille

rafi93

XLDnaute Occasionnel
bonjour à tous

je profite de cette période de confinement
pour revenir sur cette question restée sans réponse l'an dernier

je cherche une solution VBA qui me permette de :
1/ sauvegarder l'affichage d'un tableau (filtres, largeurs et groupage colonnes), du genre "SUB memoriser_affichage"
2/ réaliser divers traitements, puis
3/ revenir à l'affichage initial, du genre "SUB restaurer_affichage"

j'ai cherché un peu partout, cf le code que j'ai trouvé
outre que j'ai un peu de mal à le comprendre, il ne fonctionne pas correctement
cf dans fichier test joint :

état de départ : tableau avec dernière colonne filtrée "contient 1"
1584466861715.png

je fais "Sub sauve_filtre()"
j'enlève les filtres
je fais Sub restaure_filtre()
le tableau n'affiche plus qu'une seule ligne "titi_06" au lieu de l'état filtré initial

pourquoi ?




VB:
Option Explicit


Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String

Dim f As Integer


Sub sauve_filtre()
Set w = ActiveSheet
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteria1
If .Operator = 1 Or .Operator = 2 Then
filterArray(f, 2) = .Operator
filterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
w.AutoFilterMode = False
End Sub

Sub restaure_filtre()

Dim Monfiltre As Variant
Dim Monfiltre2 As Variant
Dim col As Integer

'Set w = ActiveSheet
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
Monfiltre = filterArray(col, 1)
If filterArray(col, 2) Then
Monfiltre2 = filterArray(col, 3)
w.Range(currentFiltRange).AutoFilter field:=col, Criteria1:=Monfiltre, Operator:=filterArray(col, 2), Criteria2:=Monfiltre2
Else
w.Range(currentFiltRange).AutoFilter field:=col, Criteria1:=Monfiltre
End If
End If
Next

End Sub


merci...
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL