Macro modification filtrage

  • Initiateur de la discussion Initiateur de la discussion delirium
  • 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 !

D

delirium

Guest
Bonsoir à tous.

J'ai réalisé en classeur comportant des donnés mensuel.
Des macro commandés par des boutons permettent de modifier l'affichage moi par moi.

J'ai activé le filtrage automatique pour permettre une recherche plus aisée.

Le problème est que lorsqu'un filtre est activé sur un moi et que l'on passe à un autre moi, ce filtrage influ également sur l'affichage du moi que l'on veut voir.

Pour remédier à cela j'ai écrit un code (très long) qui permet de remettre le filtre sur "tous" :

Sub Janvier()
'Retour filtre en position tous'
Selection.AutoFilter Field:=6
Selection.AutoFilter Field:=7
Selection.AutoFilter Field:=8
Selection.AutoFilter Field:=9
Selection.AutoFilter Field:=10
Selection.AutoFilter Field:=11
Selection.AutoFilter Field:=12
Selection.AutoFilter Field:=13
Selection.AutoFilter Field:=14
Selection.AutoFilter Field:=15
Selection.AutoFilter Field:=16
Selection.AutoFilter Field:=17
Selection.AutoFilter Field:=18
Selection.AutoFilter Field:=19
Selection.AutoFilter Field:=20
Selection.AutoFilter Field:=21
Selection.AutoFilter Field:=22
Selection.AutoFilter Field:=23
Selection.AutoFilter Field:=24
Selection.AutoFilter Field:=25
Selection.AutoFilter Field:=26
Selection.AutoFilter Field:=27
Selection.AutoFilter Field:=28
Selection.AutoFilter Field:=29
Selection.AutoFilter Field:=30
Selection.AutoFilter Field:=31
Selection.AutoFilter Field:=32
Selection.AutoFilter Field:=33
Selection.AutoFilter Field:=34
Selection.AutoFilter Field:=35
Selection.AutoFilter Field:=36
Selection.AutoFilter Field:=37
Selection.AutoFilter Field:=38
Selection.AutoFilter Field:=39
Selection.AutoFilter Field:=40
Selection.AutoFilter Field:=41
Selection.AutoFilter Field:=42
Selection.AutoFilter Field:=43
Selection.AutoFilter Field:=44
Selection.AutoFilter Field:=45
Selection.AutoFilter Field:=46
Selection.AutoFilter Field:=47
Selection.AutoFilter Field:=48
Selection.AutoFilter Field:=49
Selection.AutoFilter Field:=50
Selection.AutoFilter Field:=51
Selection.AutoFilter Field:=52
Selection.AutoFilter Field:=53
Selection.AutoFilter Field:=54
Selection.AutoFilter Field:=55
Selection.AutoFilter Field:=56
Selection.AutoFilter Field:=57
Selection.AutoFilter Field:=58
Selection.AutoFilter Field:=59
Selection.AutoFilter Field:=60
'affichage'
Columns("F:BH").Select
Selection.ColumnWidth = 0
Columns("A:b").Select
Selection.ColumnWidth = 10.71
Columns("c:c").Select
Selection.ColumnWidth = 8.29
Columns("d:d").Select
Selection.ColumnWidth = 9.43
Columns("e:e").Select
Selection.ColumnWidth = 16.43
Range("c5").Select
End Sub


Tous d’abord je voudrais savoir si il y à moyen de raccourcir tous ça.

Le second problème est lorsque je protége ma feuille, cette macro ne peut pas s'exécuter (passe en mode déboguage).

Merci de m'aider et à bientôt.
 

Pièces jointes

Bonjour Delirium, le Forum

Oui on peut alléger et optimiser tout ceci, voici pour Janvier et Février, je te laisse le soin de continuer :

Sub FilterShowingAll()
With Sheets("Planning")
If .FilterMode = True Then .ShowAllData
End With
End Sub

Sub Janvier()

Application.ScreenUpdating = False

FilterShowingAll '<<<< ici on appellera cchaque la même macro plus haut...

With Sheets("Planning")
.Columns.Hidden = False
.Columns("F:BH").Hidden = True
.Columns("A:b").ColumnWidth = 10.71 'il est probable que la largeur ne sera plus nécessairelent à ajuster ensuite...
.Columns("c:c").ColumnWidth = 8.29
.Columns("d:d").ColumnWidth = 9.43
.Columns("e:e").ColumnWidth = 16.43
.Range("c5").Select
End With
Application.ScreenUpdating = True
End Sub
Sub Fevrier()
Application.ScreenUpdating = False
FilterShowingAll
With Sheets("Planning")
.Columns.Hidden = False
.Range("A:E,K:BH").EntireColumn.Hidden = True
.Columns("f:g").ColumnWidth = 10.71
.Columns("h:h").ColumnWidth = 8.29
.Columns("i:i").ColumnWidth = 9.43
.Columns("j:j").ColumnWidth = 16.43
.Range("h5").Select
End With
Application.ScreenUpdating = True
End Sub

Bonne Journée
@+Thierry
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
946
Retour