XL 2013 macro suppression filtre excel

vadelacaisse

XLDnaute Nouveau
Supporter XLD
bonjour
plusieurs personnes utilisent le même fichier avec leur propre filtrage
souvent, le suivant est perdu à cause d'un filtre qui n'est pas le sien

je voudrais donc une macro qui supprime le filtrage quel qu’il soit avant d’enregistrer le fichier

j'ai commencé dans "classeur 1" (PJ) en enregistrant la macro minimale : ça marche

la macro enregistrée dans l'autre fichier (à droite, dans classeur 1) marche à l'enregistrement mais ne marche plus en la lançant ensuite...

le fichier est protégé par mp mais ça ne semble donc pas bloquer

j'ai repris 2/3 lignes d'une autre macro - mais ça ne doit pas gêner
cette macro avant fermeture est dans workbook, comme celle que j'ai pris en modèle et pas dans un module

question 1 : qu'ai-je fait de travers (les deux macros ne me semblent pas différentes) ?

question 2 : j'ai une trentaine de colonnes avec filtre potentiel
il y'a t'il un moyen de supprimer tous les filtres sans écrire 30 lignes de code comme les 5 déjà écrites ?

merci !
 

Fichiers joints

vadelacaisse

XLDnaute Nouveau
Supporter XLD
merci pour cette réponse hyper rapide - j'avais cherché avant de poster mais mal :(

j'ai essayé hier soir en modifiant la façon de faire
il me semble pas facile de supprimer le filtre avant d'enregistrer
j'ai donc "renommé" la commande BeforeClose en BeforeOpen sans savoir si ça existait...
le but étant d'enlever le filtrage dès l'ouverture du fichier
ça n'a pas l'air de buguer mais ça ne marche pas : le filtrage subsiste après ouverture

j'ai eu aussi l'erreur 1004 dan mon fichier - mais pas dans le fichier joint

merci !
 

Fichiers joints

cp4

XLDnaute Impliqué
Bonjour,

un essai dans workbook_open pas beforeOpen
VB:
Private Sub Workbook_Open()
    Sheets("Liste").ShowAllData
End Sub
 

vadelacaisse

XLDnaute Nouveau
Supporter XLD
bonjour et merci
la macro fonctionne si le fichier n'est pas protégé par mp
avec le mp, j'ai la même erreur 1004 (la méthode showalldata a échoué...)
je verrouille pourtant le fichier en autorisant le filtrage de toutes les colonnes avec filtre (de A à AG)- et on peut effectivement filtrer le fichier verrouillé
ne serait-ce pas parce que showalldata voudrait enlever le filtre des autres colonnes bien qu'elles ne comportent pas de filtre ?
la solution peut-elle être de "limiter" showalldata aux colonnes A à AG ?

merci
 

_Thierry

XLDnaute Barbatruc
Bonjour @vadelacaisse , @dg62 , @cp4 , le Forum

En fait il faut tester avant le ShowAllData si il y a un AutoFilter, (sinon le On Error Resume Next)

A mettre où tu veux au choix dans Private Module de "ThisWorkBook" dans un des évènements :
  • Private Sub Workbook_BeforeClose(Cancel As Boolean)
  • Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  • Private Sub Workbook_Open()
VB:
Option Explicit

Sub Filter_Removal_But_Keeping_The_AutoFilter()
Dim WS As Worksheet

Set WS = ThisWorkbook.Worksheets("Liste")

    If WS.AutoFilterMode = True Then
        If WS.FilterMode = True Then
            WS.ShowAllData
        End If
    End If
    
End Sub
Bien à toi, à vous
@+Thierry
 

vadelacaisse

XLDnaute Nouveau
Supporter XLD
bon- j'ai essayé plein de combinaisons improbables

le pb est que je ne maîtrise ni l'architecture, ni la syntaxe de VBA
donc "A mettre où tu veux au choix...", c'est du chinois pour moi :confused: désolé

actuellement j'ai ça, dans "This Workbook" - et ça ne marche évidemment pas :

Option Explicit
Private Sub Workbook_Open()

Sub Filter_Removal_But_Keeping_The_AutoFilter()
Dim WS As Worksheet

Set WS = ThisWorkbook.Worksheets("Liste")

If WS.AutoFilterMode = True Then
If WS.FilterMode = True Then
WS.ShowAllData
End If
End If


End Sub
 

_Thierry

XLDnaute Barbatruc
Re Valdelacaisse, le Fil

J'ai mis dans ton classeur le code qu'il faut ...
Il n'est pas impératif d'avoir le code entier dans
Private Sub Workbook_Open()

On peut faire appel à une macro standard du module1... (qui fonctionne aussi avec le bouton, pour tester)

Il faut que tu aies une feuille nommée "Liste" aussi bien entendu !

@+Thierry
 

Fichiers joints

vadelacaisse

XLDnaute Nouveau
Supporter XLD
oine again - désolé
je comprends petit à petit
le code dans workbook renvoie vers l'autre code du module

j'ai recopié le cde de ton worbook dans celui de mon fichier
et celui de ton module 1 dans un module sue j'ai ajouté

cette fois ça plante là : WS.ShowAllData
et même dans ton fichier si je le verrouille (en autorisant le filtre)

de ce que je comprends, la macro explore toutes les colonnes et si le filtre est présent elle le supprime - mais ShowAllData s'applique peut-être à tout, pas à la seule colonne examinée ?

une piste - que je ne sais par traduire en code, of course :
limiter l'exploration aux colonnes A à AG (plus rapide) ou conserver toutes les colonnes de la feuille, comme maintenant
mais en supprimant le filtrage de la colonne examinée seulement
du genre "WS.ShowColumnData" - pardon pour cet anglicisme que j'ai essayé sans succès :)
 

_Thierry

XLDnaute Barbatruc
En effet je n'ai pas testé sur Classeur, ou la Feuille en mode protection.

Pour le reste, ne t'inquiète pas pour "limiter l'exploration aux colonnes A à AG (plus rapide) " Le fait de faire un ShowAllData est en millième de seconde, ca ne pose pas de souci.

Non il reste à voir pourquoi quand le Classeur ou la Feuille sont vérouillés ca ne passe pas... Je ferai d'autres tests...

@+Thierry
 

_Thierry

XLDnaute Barbatruc
Bonsoir @vadelacaisse , le Fil, le Forum

J'ai essayé différents trucs, pour just un "ShowAllData" j'aurai bien aimé ne pas avoir à déprotéger la Feuille par le code pour la reprotéger ensuite, mais je n'ai pas trouvé, même si les Users sont autorisés à utiliser l'AutoFilter (ca on peut le faire), VBA non !, et le UserInferfaceOnly ne peut pas être déclenché sans faire l'action de protection car il fait partie intégrante de Protect Method...

Donc J'ai remodelé le code du Module1...

Je te laisse découvrir et poser les questions que tu pourrais avoir...

Bien à toi, à vous
@+Thierry
 

Fichiers joints

vadelacaisse

XLDnaute Nouveau
Supporter XLD
et ça marche :)
le filtre n'est plus appliqué tout en restant en place pour le nouvel utilisateur
un grand merci !
je comprends la logique mais je reste pantois devant le code, la syntaxe : respect !
 

vadelacaisse

XLDnaute Nouveau
Supporter XLD
il faut rendre à Cesar...

Sub Filter_Removal_But_Keeping_The_AutoFilter()
'
'suppression du filtrage à l'ouverture
'macro de _Thierry sur www.excel-downloads.com
'

Dim WS As Worksheet
Dim MyPassword As String
...

Pierrejean (d'ici) m'avait fait une macro y'a des années : il a aussi son nom dans le fichier
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas