Commande VBA Filtres Présents

Bonjour,

J'ai 2 tableaux.

Le tableau à la colonne A à C a un filtre à la ligne 1.

Le tableau à la colonne E à F n'a pas de filtre à la ligne 1.

J'aimerais connaître la commande VBA qui me permet de vérifier s'il y a un filtre présent dans un tableau et s'il n'y en n'a pas d'en ajouter un.

Voici un fichier comme exemple.

Merci.

Oiseau bleu

Bonjour ,

Ce code devrait le faire :

Sub FiltrerOuiNon()
ActiveSheet.ListObjects("Tableau1").ShowAutoFilterDropDown = MsgBox("Filtrer tableau1 ?", vbDefaultButton2 + vbYesNo + vbQuestion) = vbYes
ActiveSheet.ListObjects("Tableau2").ShowAutoFilterDropDown = MsgBox("Filtrer tableau2 ?", vbDefaultButton2 + vbYesNo + vbQuestion) = vbYes
End Sub

Bonjour,

Malheureusement cela ne fonctionne pas avec le tableau qui n'a pas de filtre erreur 1004 Erreur définie par l'application ou par l'objet

Ça ne remet pas le filtre.

Merci quand même et bonne journée.

Re,

Je pense que le tableau structuré "Tableau2" de votre classeur a un problème.

  1. sélectionnez- le
  2. dans le menu "Création de tableau", convertissez-le en plage
  3. puis dans le menu "Insertion", re-transformez-le en tableau
  4. n'oubliez pas de le renommer "Tableau2"
  5. dans le menu "Création de tableau", l'option "Bouton de filtre" doit être à nouveau pouvoir être activé (à la main ou par macro)

Bonjour,

Si j'enlève à la ligne 1 le filtre du Tableau 2 colonne EE à GG et avec Accueil et Trier et filtrer et puis je clique sur Filtrer pour enlever les filtres.

J'exécute votre macro pour remettre les filtres à la ligne 1 du Tableau 2 colonne EE et GG, j'ai une erreur d'exécution.

Impossible de remettre les filtres si enlevé. Comment faire avec une commande VBA pour les remettre?

Merci pour votre réponse,

Oiseau bleu

re,

a mon avis, c'est bête, 2 autofilters dans la même feuille, les plages ne peuvent pas avoir des lignes communes, certainement pas comme votre exemple.

VBA ne connait que le dernier autofilter, il ne connait pas les 2, donc c'est déroutant

Bonjour,

Si j'enlève le Tableau1 colonne AA à CC et j'enlève la ligne VBA se référant à ce Tableau et j'exécute.

Cela ne fonctionne toujours pas.

Oiseau bleu

Re,

a mon avis, c'est bête, 2 autofilters dans la même feuille, les plages ne peuvent pas avoir des lignes communes, certainement pas comme votre exemple.

Oui c'est logique. C'est ce que j'aurais dû penser. Mais en faisant comme j'ai procédé, Excel accepte à nouveau un filtre sur chacun des deux tableaux (ce qui n'est pas logique en soi). serait-ce un bogue ?

Je vous joins le fichier avec les deux tableaux qui ont chacun un filtre. Constatez-vous aussi la présence des deux filtres ?

(évidemment les résultats sont aberrants)

image

re oiseaubleu,

Il faut oublier vouloir filtrer deux tableaux avec des lignes communes comme l'a dit si justement BsAlv (que je salue ) => ça ne peut mener qu'à à des résultats aberrants.

Bonjour,

J'ai juste mis 2 tableaux pour montrer la présence de filtre ou non. C'était un exemple.

J'ai juste 1 tableau dans mon onglet; mais si les filtres de la premières lignes sont absents je ne connais pas le commande VBA pour tester la présence de filtres et si les filtres sont absents remettre les filtres.

Merci,

Oiseau bleu

Re,

Est ce cela que vous désirez : ?

Worksheets("Feuil1").ListObjects("tableau1").ShowAutoFilterDropDown = True

re,

c'est impossible de le savoir si on joue avec cette propriété

Sub Mes_filtres()
     On Error Resume Next
     For i = 1 To 2
          With Sheets("Feuil1").ListObjects(i)
               If Not .ShowAutoFilterDropDown Then .Range.AutoFilter
          End With
     Next
     On Error GoTo 0

     MsgBox "et maintenant pour gâcher, cacher les fleches !!!! "
     With Sheets("Feuil1").ListObjects(1)
          .Range.AutoFilter 1, "*5"
          .ShowAutoFilterDropDown = False '>>> un autofilter sans flèches !!!
     End With

End Sub

Re,

c'est impossible de le savoir si on joue avec cette propriété

Je sais que ça masque ou affiche les flèches des filtres (le nom de la propriété est parlant). J'ai proposé à tout hasard (le nom de la propriété est parlant).

Ce que je ne comprends pas, c'est ce que désire réellement le demandeur ?

moi non plus, appliquer l'autofilter sans rien demander et il existe ..

Bonjour et merci,

Sub Mes_filtres()

    If Sheets("Feuil1").ListObjects("tableau1").ShowAutoFilterDropDown = False Then Sheets("Feuil1").ListObjects("tableau1").Range.AutoFilter

End Sub

Cela fonctionne très bien. Cela vérifie s'il n'y a pas de filtre et en met un. C'est ce que j'avais besoin.

Merci beaucoup pour votre aide.

Oiseau bleu

Bonjour à tous,

Hé bien avec tout ça, tu as trouvé ton bonheur. Bravo ! Pour ma part, je n'ai été ni lucide ni performant sur la question !

et moi, apparament, j'étais trop prudent avec mon "On Error Resume Next"

Rechercher des sujets similaires à "commande vba filtres presents"