bonjour à tous
(toujours aussi) peu à l'aise avec VBA, je viens de passer 2h à essayer d'utiliser les SUB sauve/restore que j'ai récupéré sur le forum.
la routine "test" appelle "sauve" puis "restore",
mais ça plante systématiquement dès le début sur la variable "w" , pb de declaration de variable je suppose, je n'arrive pas à comprendre pourquoi.
et 2eme point : comment faire aussi pour "sauve" / "restore" le regroupement de colonnes ("grouper") ?
merci !!!
(toujours aussi) peu à l'aise avec VBA, je viens de passer 2h à essayer d'utiliser les SUB sauve/restore que j'ai récupéré sur le forum.
la routine "test" appelle "sauve" puis "restore",
mais ça plante systématiquement dès le début sur la variable "w" , pb de declaration de variable je suppose, je n'arrive pas à comprendre pourquoi.
et 2eme point : comment faire aussi pour "sauve" / "restore" le regroupement de colonnes ("grouper") ?
merci !!!
VB:
Option Explicit
Sub sauve_filtre()
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()
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
Sub test()
Dim toto, titi, tata, cette_ref_op As String
Dim i, InString(), D, ligne, colonne, compteur, nbr As Integer
Dim montant_reparti, montant_initial As Variant
Dim c As Range
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Dim Monfiltre As Variant
Dim Monfiltre2 As Variant
Dim f, col As Integer
Set w = ActiveWorkbook.ActiveSheet
sauve_filtre
restaure_filtre
End Sub