[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.
 

Dranreb

XLDnaute Barbatruc
Re : VBA : Filtres

À ma connaissance non, les lignes masquées manuellement ont simplement une hauteur nulle.
 

Robert

XLDnaute Barbatruc
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
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...
 

Dranreb

XLDnaute Barbatruc
Re : VBA : Filtres

Voir mon exemple au poste #2. Si convient pas, c'est la recommandation de ma signature qui s'appliquera désormais.
 

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.
 

Fichiers joints

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:

villette54

XLDnaute Junior
Re : VBA : Filtres

Bonjour Dranreb,

Cette fois c'est la bonne.
Ça fonctionne parfaitement, je te remercie du temps que tu as consacré à mon problème.

Encore merci, et bonne journée.
 

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