VBA Réappliquer filtre sur toutes les feuilles d'un classeur periodiquement

  • Initiateur de la discussion Initiateur de la discussion ArQ
  • Date de début Date de début

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 !

ArQ

XLDnaute Nouveau
Bonjour à la communauté.

J'ai un classeur pour lequel, je veux réappliquer periodiquement, des filtres au préalable défini, sur chacune de mes 50 feuilles du classeur. Cette macro sera lancée à l'ouverture du classeur.

J'ai trouvé plusieurs solutions avec des macros liées à chaque feuille, mais aucune ne me permet de pouvoir changer le nom des feuilles ou de créer de nouvelles pages si le coeur m'en dit.

Je viens donc à vous, pour savoir si vous aviez cette corde à votre arc. Corde que vous voudriez bien partager.

[EDIT] j'ai trouvé ce code qui marche. Il prend 8 secondes à s'appliquer. Avez vous une solution plus rapide pour moi sachant que la ligne de code si-dessous n'est pas efficiente ?
Code:
application.screenupdating=false

Code:
Sub ReapplyFilters()
   Dim wsh As Worksheet
   Dim flt As autofilter
   For Each wsh In Worksheets
     Set flt = wsh.autofilter
     If Not flt Is Nothing Then
       flt.ApplyFilter
     End If
   Next wsh
 End Sub

D'avance, je vous remercie de votre attention et de votre participation,
Bien cordialement,
ArQ
 

Pièces jointes

Dernière édition:
Re : VBA Réappliquer filtre sur toutes les feuilles d'un classeur periodiquement

Bonsoir ArQ,

Essai comme ceci


Code:
Private Sub Workbook_Open()
Dim x As Integer, i As Integer
x = 0
   For i = 1 To 3
   x = x + 1
   Sheets(x).Activate
    ActiveSheet.Range("A1").AutoFilter Field:=3
   Next i
End Sub


A+ 😎
 
Dernière édition:
Re : VBA Réappliquer filtre sur toutes les feuilles d'un classeur periodiquement

Re,

une autre façon

Code:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Activate
ActiveSheet.Range("a1").AutoFilter Field:=3
Next ws
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In Worksheets
ws.Activate
ActiveSheet.AutoFilterMode = False
Next ws
Application.ScreenUpdating = True
Application.DisplayAlerts = False
ActiveWorkbook.Save
End Sub



A+ 😎
 
Dernière édition:
Re : VBA Réappliquer filtre sur toutes les feuilles d'un classeur periodiquement

Pardon pour le faux retard de réponse. Je pense qu'il y a eu un soucis lors de mon premier envoie
Tes formules marchent très bien et m'ont meme permises de gagner un peu de temps.
Merci pour le temps passé
 
- 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
7
Affichages
214
Réponses
5
Affichages
144
Réponses
3
Affichages
673
Retour