Macro modification filtrage

  • Initiateur de la discussion delirium
  • Date de début
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

  • Atelier.zip
    28.6 KB · Affichages: 41
  • Atelier.zip
    28.6 KB · Affichages: 56
  • Atelier.zip
    28.6 KB · Affichages: 47
@

@+Thierry

Guest
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
 
D

delirium

Guest
Bonsoir Therry.

J'ai encore un problème avec ton code.

Voila il fonctionne bien sauf lorsque je protége la feuille et que j'utilise un filtre.
Si l'on change de mois, le programme ce met en déboguage.

comment faire ?

Merci
 

Pièces jointes

  • Atelier.zip
    24.6 KB · Affichages: 28
  • Atelier.zip
    24.6 KB · Affichages: 31
  • Atelier.zip
    24.6 KB · Affichages: 33

Discussions similaires