[Résolu]VBA : Filtres

villette54

XLDnaute Junior
Bonjour à tous,

J'ai déjà posté un sujet similaire mais je m'étais mal exprimé.

Je souhaiterais savoir comment "reset les filtres" et non pas les supprimer avec VBA
On m'avait proposé cette solution :

Private Sub Workbook_Open()
ActiveSheet.AutoFilterMode = False
End Sub


Mais 2 problèmes se posent :
1. Cette action ne reset pas les filtres, elle les supprime
2. Je souhaite que ce reset ne s'applique pas à ma feuille active, mais à mes feuilles nommées : "Bleues" et "Rouges"

En espérant pouvoir être aidé,

Merci d'avance
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : VBA : Filtres

Bonjour.
ShowAllData, méthode

Voir aussi S'applique à Exemple Spécificités
Cette méthode affiche toutes les lignes de la liste actuellement filtrée. Si le filtre automatique est utilisé, cette méthode remplace les flèches par « Tout »
expression.ShowAllData

expression Obligatoire. Expression qui renvoie un objet Worksheet.
Exemple

Cet exemple montre comment afficher toutes les données de la feuille Sheet1. Il doit être exécuté sur une feuille de calcul qui contient une liste que vous avez filtrée à l'aide de la commande Filtre automatique.

Worksheets("Sheet1").ShowAllData
[h=1]FilterMode, propriété[/h] Voir aussi S'applique à Exemple Spécificités
Cette propriété a la valeur True si la feuille de calcul est en mode filtre. Type de données Boolean en lecture seule.
[h=2]Note[/h] Cette propriété a la valeur True si la feuille de calcul contient une liste filtrée qui contient des lignes masquées.
[h=2]Exemple[/h] Cet exemple montre comment afficher dans une boîte de message l'état du filtre de la feuille Sheet1.

If Worksheets("Sheet1").FilterMode = True Then MsgBox "Filter mode is on" Else MsgBox "Filter mode is off" End If
Mais les exemples sont à dégueuler. Alors j'en propose un plus intelligent:
VB:
Dim F As Worksheet
For Each F In Worksheets
   If F.FilterMode Then F.ShowAllData
   Next F
Cordialement
 
Dernière édition:

villette54

XLDnaute Junior
Re : VBA : Filtres

Merci de ta réponse,

J'ai juste une petite question, la fonction .ShowAllData ne révèle-t-elle pas les lignes/colonnes masquées par la même occasion ?
Auquel cas, cela risque d'être problématique pour moi.

Merci d'avance pour la précision.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA : Filtres

Bonjour le fil, bonjour le forum,

Pas sûr d'avoir bien compris... Deux options :
• Le le composant ThisWorkbook
:
Code:
Private Sub Workbook_Open()
Sheets("Rouges").AutoFilterMode = False
Sheets("Bleues").AutoFilterMode = False
End Sub
ou
• Dans le composant de chaque onglet :

Code:
Private Sub Worksheet_Activate()
ActiveSheet.AutoFilterMode = False
End Sub
Les flèches du filtre sont masquées mais les lignes masquées restent masquées, contrairement à ShowAllData...
 

villette54

XLDnaute Junior
Re : VBA : Filtres

Bonjour Robert,

Merci de ta réponse mais je travaillais déjà avec AutoFilterMode = False et le soucis c'est que cela supprime complètement l'outil filtre, ça ne se contente pas de les "remettre à 0".

Est-ce normal ou ai-je un problème ?

Edit : En fait, les utilisateurs sauvegardent et ferment souvent la base de données Excel avec des filtres actifs, ce qui pose des problèmes aux utilisateurs suivants (qui ne font pas forcément attention aux filtres actifs)
Je souhaite donc qu'à chaque ouverture ou fermeture de fichier, une macro se déclenche afin d'annuler tous les filtres actifs. (J'espère avoir été plus clair cette fois)
Merci d'avance
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA : Filtres

Bonjour le fil bonjour le forum,

Tu as tout à fait raison Vilette. Mon code ne résoud rien... Désolé j'avais pourtant testé mais visiblement je n'ai pas les yeux en face des trous...
 

villette54

XLDnaute Junior
Re : VBA : Filtres

Bonjour à tous,

J'ai essayé ta solution Dranreb, mais cela ne s’exécute pas.

Je vous ai mis en pièce jointe un extrait de mon fichier pour donner un aperçut.
Pour info complémentaire : les utilisateurs encodent sur ce fichier qui est en permanence verrouillé (sauf les cellules vides). Sur ce fichier j'ai mis 123 en mot de passe, juste pour être en condition réelle.
La colonne masqué est utilisée pour des formules sur les autres feuilles du fichier original.

Certains utilisateurs ne font que consulter la base, et la ferme parfois avec des filtres actifs, je souhaite simplement que ceux-ci soit "remis à zéro" à la prochaine ouverture du fichier, afin que les personnes les moins aisées sur Excel n'ai pas de manipulations supplémentaires à faire.

En espérant pouvoir être aidé, merci d'avance.
 

Pièces jointes

  • Suppression filtres test.xlsm
    214.9 KB · Affichages: 53
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : VBA : Filtres

Bonjour.
La méthode ne peut pas être utilisée sur une feuille protégée, à moins que la protection n'y soit avec le paramètre UserinterfaceOnly à True.
Essayez comme ça:
VB:
Private Sub Workbook_Open()
Dim F As Worksheet
For Each F In Worksheets
   If F.FilterMode Then
      F.Protect UserinterfaceOnly:=True, Password:="123", AllowFiltering:=True, _
         DrawingObjects:=True, Contents:=True, Scenarios:=True
      F.ShowAllData: End If
   Next F
End Sub
J'ai vu tardivemlent que le mot de passe était indiqué dans votre dernier post.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T