Microsoft 365 sauve/restore filtre et regroupement colonnes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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 ?
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
183
Réponses
4
Affichages
179
Réponses
10
Affichages
282
Réponses
3
Affichages
665
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
481
Retour