Microsoft 365 sauve/restore filtre et regroupement colonnes

rafi93

XLDnaute Occasionnel
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 !!!



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
 

sousou

XLDnaute Barbatruc
Bonjour.
pour les déclaration. avec option explicit tu dois préalablement déclarer toutes les variable que tu veux utiliser
Option Explicit
public w
et dans tes procédure tu dois dire ce qu'est w
set w= activesheet par exmple en début de procédure
 

rafi93

XLDnaute Occasionnel
Bonjour.
pour les déclaration. avec option explicit tu dois préalablement déclarer toutes les variable que tu veux utiliser
Option Explicit
public w
et dans tes procédure tu dois dire ce qu'est w
set w= activesheet par exmple en début de procédure

ok merci

mais question de débutant :
l'option Explicit oblige à déclarer toutes les variables si j'ai bien compris.
mais à quel niveau faut il les declarer :
- immediatement sous le Explicit avec Public (et elle deviennent donc globales)?
- ou juste sous le SUB qui l'utilise, et elles ne lui sont que locales ?

et si on déclare une variable dans une SUB, qui appelle une autre SUB : est ce que la variable et sa valeur reste visible dans la SUB appelée ?
 

rafi93

XLDnaute Occasionnel
ok compris
et en plus ça marche !

j'arrive donc bien à sauvegarder puis restaurer un filtre

par contre maintenant, je n'arrive pas à faire la 2eme partie de la question : sauvegarder et restaurer le niveau d'Outlines de la feuille
mais je vais ouvrir un nouveau post
merci encore
 

Discussions similaires

Statistiques des forums

Discussions
312 327
Messages
2 087 314
Membres
103 515
dernier inscrit
Cherbil12345