Défiltrer second clic sur case à cocher

Bonjour le forum!

J'aimerai comme le titre l'indique, "défiltrer" au second clic sur une checkbox (donc quand checkbox décochée).

En effet lors du premier clic cela exécute ma macro liée mais quand je décoche cela ne me supprime pas le filtrage qui a été effectué lors du premier clic.

Voici le fichier test, toutes les checkbox fonctionne mais un exemple sur une me suffira à reproduire, je pense, la chose sur les autres.

http://www.cjoint.com/15fe/EBjjMUZITiF.htm

En espérant trouver de l'aide! Merci d'avance et à très vite!

Bonjour

Zayx a écrit :

un exemple sur une me suffira à reproduire, je pense, la chose sur les autres.

Alors voilà :

Private Sub CheckBox1_Click()
    If CheckBox1 = False Then
       ActiveSheet.ShowAllData
    Else
        Call Genre_Amnésie
    End If
End Sub

Bon courage !

Bye !

Bonjour Zayx, gmb

Sinon une procédure générique, plutôt qu'une multitude de procédures

' Procédure générale
Sub FiltrerGenre(sGenre As String, Actif As Boolean)
  Dim Obj As Object
  Application.ScreenUpdating = False
  For i = 1 To 10
    nom = Choose(i, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
    Cells(17, i) = nom
    Cells(4, i + 10) = nom
    Cells(4 + i, i + 10) = sGenre & "*"  '"Amnésie*"
  Next i
  If Actif Then
    Range("A17:J" & Range("A" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("K4:T14"), Unique:=False
  Else
    ActiveSheet.ShowAllData
  End If
  Range("A17:A10").ClearContents
  Range("k4:T14").ClearContents
End Sub

Et derrière chaque Checkbox, tu appelles la procédure générique avec le genre et la valeur du checkbox

Private Sub CheckBox1_Click()
  Call FiltrerGenre("Amnésie*", Me.CheckBox1.Value)
End Sub

A+

Bonjour gmb, Bruno!

Alors si j'ai bien compris, vos deux macro activent Showalldata si la case à cocher est décochée, c'est bien ça?

Or moi j'aimerai que seul le filtre, par exemple le premier, "Amnésie" soit défiltré.

Je serai amené plus tard à cumuler des filtres (par exemple afficher tous les titres qui font partie des genres "Amnésie" et "Android") et donc quand je "défiltrerai" une case ("Amnésie") à cocher sur les deux et bien l'autre ("Android") restera filtré tant que je n'y toucherai pas.

Vous voyez la subtilité?

Pour ce qui est de ta procédure générique Bruno j'ai compris comment elle fonctionne, je la garde de côté et metterai ça à jour.

En tout cas merci pour vos réponses et j'espère que la "subtilité" sera saisie et qu'on pourra y faire quelque chose

A très vite!

Re,

Zayx a écrit :

Alors si j'ai bien compris, vos deux macro activent Showalldata si la case à cocher est décochée, c'est bien ça?

Or moi j'aimerai que seul le filtre, par exemple le premier, "Amnésie" soit défiltré.

Je serai amené plus tard à cumuler des filtres (par exemple afficher tous les titres qui font partie des genres "Amnésie" et "Android") et donc quand je "défiltrerai" une case ("Amnésie") à cocher sur les deux et bien l'autre ("Android") restera filtré tant que je n'y toucherai pas.

C'est tout le code qu'il faut revoir alors, car actuellement le filtrage sur critères cumulés n'existe pas

Donc on ne peut que supprimer le filtre

A+

BrunoM45 a écrit :

Re,

C'est tout le code qu'il faut revoir alors, car actuellement le filtrage sur critères cumulés n'existe pas

Donc mon désir de faire des filtres cumulés est impossible à réaliser?

Salut Zayx,

Zayx a écrit :

Donc mon désir de faire des filtres cumulés est impossible à réaliser?

Non, il fallait juste se pencher un peu plus sur le sujet

Voici ton fichier avec les modifications

https://www.cjoint.com/c/EBms1JShT3O

Dis nous

Bonjour Bruno, le forum!

Alors j'ai DL le fichier mais je ne vois aucune modif. Le défiltrage lorsqu'on décoche une case non effectif ni même le filtrage cumulé...

Pas de code différente de mon fichier d'origine non plus, un fail ou alors moi qui ne vois pas ce qu'il faut?

Bonsoir Zayx

Oups vraiment désolé, je n'ai pas mis le bon fichier

Je change le lien du précédent message

A+

Bonsoir Bruno, le forum!

Encore une fois, je ne sais pas si tu as déjà remplacé le lien ou pas mais c'est toujours le même fichier

Dans l'attente je te souhaite une bonne soirée et à très vite

Bonsoir Zayx

Je n'y comprend rien j'ai pourtant fait attention la 2ème fois

J'ai l'impressions que le site n'a pas su remplacer le fichier téléchargé

Cette fois-ci j'ai récupéré le fichier une fois mis sur le site et c'est le bon

Sinon le code de la Feuille de Genres

'Call FiltrerGenre("*", Me.CheckBox??.Value)
Private Sub CheckBox1_Click()
  Call FiltrerGenre("Amnésie*", Me.CheckBox1.Value)
End Sub

Private Sub CheckBox10_Click()
  Call FiltrerGenre("Basket-ball*", Me.CheckBox10.Value)
End Sub

Private Sub CheckBox11_Click()
  Call FiltrerGenre("Bro.com*", Me.CheckBox11.Value)
End Sub

Private Sub CheckBox12_Click()
  Call FiltrerGenre("Comédie*", Me.CheckBox12.Value)
End Sub

Private Sub CheckBox13_Click()
  Call FiltrerGenre("Combat*", Me.CheckBox13.Value)
End Sub

Private Sub CheckBox14_Click()
  Call FiltrerGenre("Cyclisme*", Me.CheckBox14.Value)
End Sub

Private Sub CheckBox15_Click()
  Call FiltrerGenre("Ecchi*", Me.CheckBox15.Value)
End Sub

Private Sub CheckBox16_Click()
  Call FiltrerGenre("Fantastique*", Me.CheckBox16.Value)
End Sub

Private Sub CheckBox17_Click()
  Call FiltrerGenre("Fantasy*", Me.CheckBox17.Value)
End Sub

Private Sub CheckBox18_Click()
  Call FiltrerGenre("Cuisine*", Me.CheckBox18.Value)
End Sub

Private Sub CheckBox19_Click()
  Call FiltrerGenre("Drame*", Me.CheckBox19.Value)
End Sub

Private Sub CheckBox2_Click()
  Call FiltrerGenre("Android*", Me.CheckBox2.Value)
End Sub

Private Sub CheckBox20_Click()
  Call FiltrerGenre("Equitation*", Me.CheckBox20.Value)
End Sub

Private Sub CheckBox21_Click()
  Call FiltrerGenre("Foot-ball*", Me.CheckBox21.Value)
End Sub

Private Sub CheckBox22_Click()
  Call FiltrerGenre("Foot-ball Américain*", Me.CheckBox22.Value)
End Sub

Private Sub CheckBox23_Click()
  Call FiltrerGenre("Film d'animation*", Me.CheckBox23.Value)
End Sub

Private Sub CheckBox24_Click()
  Call FiltrerGenre("Guerre*", Me.CheckBox24.Value)
End Sub

Private Sub CheckBox25_Click()
  Call FiltrerGenre("Gun-fight*", Me.CheckBox25.Value)
End Sub

Private Sub CheckBox26_Click()
  Call FiltrerGenre("Harem*", Me.CheckBox26.Value)
End Sub

Private Sub CheckBox27_Click()
  Call FiltrerGenre("Histoire courte*", Me.CheckBox27.Value)
End Sub

Private Sub CheckBox28_Click()
  Call FiltrerGenre("Héroïc-Fantasy*", Me.CheckBox28.Value)
End Sub

Private Sub CheckBox29_Click()
  Call FiltrerGenre("Horreur", Me.CheckBox29.Value)
End Sub

Private Sub CheckBox3_Click()
  Call FiltrerGenre("Androphobie*", Me.CheckBox3.Value)
End Sub

Private Sub CheckBox30_Click()
  Call FiltrerGenre("Historique*", Me.CheckBox30.Value)
End Sub

Private Sub CheckBox31_Click()
  Call FiltrerGenre("Idole*", Me.CheckBox31.Value)
End Sub

Private Sub CheckBox32_Click()
  Call FiltrerGenre("Jeu de cartes*", Me.CheckBox32.Value)
End Sub

Private Sub CheckBox33_Click()
  Call FiltrerGenre("Jeu de table*", Me.CheckBox33.Value)
End Sub

Private Sub CheckBox34_Click()
  Call FiltrerGenre("Loli*", Me.CheckBox34.Value)
End Sub

Private Sub CheckBox35_Click()
  Call FiltrerGenre("Magical Girl*", Me.CheckBox35.Value)
End Sub

Private Sub CheckBox36_Click()
  Call FiltrerGenre("Meccha*", Me.CheckBox36.Value)
End Sub

Private Sub CheckBox37_Click()
  Call FiltrerGenre("Monde virtuel*", Me.CheckBox37.Value)
End Sub

Private Sub CheckBox38_Click()
  Call FiltrerGenre("Monde parallèle*", Me.CheckBox38.Value)
End Sub

Private Sub CheckBox39_Click()
  Call FiltrerGenre("Natation*", Me.CheckBox39.Value)
End Sub

Private Sub CheckBox4_Click()
  Call FiltrerGenre("Art.Martiaux*", Me.CheckBox4.Value)
End Sub

Private Sub CheckBox40_Click()
  Call FiltrerGenre("Musique*", Me.CheckBox40.Value)
End Sub

Private Sub CheckBox41_Click()
  Call FiltrerGenre("Ninja*", Me.CheckBox41.Value)
End Sub

Private Sub CheckBox42_Click()
  Call FiltrerGenre("Parodique*", Me.CheckBox42.Value)
End Sub

Private Sub CheckBox43_Click()
  Call FiltrerGenre("Patinage Artistique*", Me.CheckBox43.Value)
End Sub

Private Sub CheckBox44_Click()
  Call FiltrerGenre("Policier*", Me.CheckBox44.Value)
End Sub

Private Sub CheckBox45_Click()
  Call FiltrerGenre("Post-apocalyptique*", Me.CheckBox45.Value)
End Sub

Private Sub CheckBox46_Click()
  Call FiltrerGenre("Psycho*", Me.CheckBox46.Value)
End Sub

Private Sub CheckBox47_Click()
  Call FiltrerGenre("Romance*", Me.CheckBox47.Value)
End Sub

Private Sub CheckBox48_Click()
  Call FiltrerGenre("Roller*", Me.CheckBox48.Value)
End Sub

Private Sub CheckBox49_Click()
  Call FiltrerGenre("School-life*", Me.CheckBox49.Value)
End Sub

Private Sub CheckBox5_Click()
  Call FiltrerGenre("Athlétisme*", Me.CheckBox5.Value)
End Sub

Private Sub CheckBox50_Click()
  Call FiltrerGenre("Samouraï*", Me.CheckBox50.Value)
End Sub

Private Sub CheckBox51_Click()
  Call FiltrerGenre("Sci.Fi*", Me.CheckBox51.Value)
End Sub

Private Sub CheckBox52_Click()
  Call FiltrerGenre("Sexe*", Me.CheckBox52.Value)
End Sub

Private Sub CheckBox53_Click()
  Call FiltrerGenre("Sis.com*", Me.CheckBox53.Value)
End Sub

Private Sub CheckBox54_Click()
  Call FiltrerGenre("Space Opéra*", Me.CheckBox54.Value)
End Sub

Private Sub CheckBox55_Click()
  Call FiltrerGenre("Sport*", Me.CheckBox55.Value)
End Sub

Private Sub CheckBox56_Click()
  Call FiltrerGenre("Super-pouvoirs*", Me.CheckBox56.Value)
End Sub

Private Sub CheckBox57_Click()
  Call FiltrerGenre("Survival-game*", Me.CheckBox57.Value)
End Sub

Private Sub CheckBox58_Click()
  Call FiltrerGenre("Surnaturel*", Me.CheckBox58.Value)
End Sub

Private Sub CheckBox59_Click()
  Call FiltrerGenre("Terroriste*", Me.CheckBox59.Value)
End Sub

Private Sub CheckBox6_Click()
  Call FiltrerGenre("Automobile*", Me.CheckBox6.Value)
End Sub

Private Sub CheckBox60_Click()
  Call FiltrerGenre("Tennis*", Me.CheckBox60.Value)
End Sub

Private Sub CheckBox61_Click()
  Call FiltrerGenre("Tranche de vie*", Me.CheckBox61.Value)
End Sub

Private Sub CheckBox62_Click()
  Call FiltrerGenre("Volley-ball*", Me.CheckBox62.Value)
End Sub

Private Sub CheckBox63_Click()
  Call FiltrerGenre("Voyage temporel*", Me.CheckBox63.Value)
End Sub

Private Sub CheckBox7_Click()
  Call FiltrerGenre("Base-ball*", Me.CheckBox7.Value)
End Sub

Private Sub CheckBox8_Click()
  Call FiltrerGenre("Aventure*", Me.CheckBox8.Value)
End Sub

Private Sub CheckBox9_Click()
  Call FiltrerGenre("Boxe", Me.CheckBox9.Value)
End Sub

Private Sub TextBox1_Change()
  TextBox1.Value = Application.Proper(TextBox1.Value)
  Dim Ws As Worksheet
  For Each Ws In Sheets(Array("Feuille de Genres"))
    Dim sCritere As String
    sCritere = "=" & TextBox1.Text & "*"
    Ws.Range("$A$18:$J$100000").AutoFilter Field:=1, Criteria1:=sCritere, _
                                           Operator:=xlAnd  'colonne à filtrer 1 = A, 2 = B etc...'
  Next Ws
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Target, Range("A18:A" & Range("A18").End(xlDown).Row)) Is Nothing Then
    Set Cel = Sheets("Feuille de Genres").Range(Target.Address)
    Cel.Offset(0, 1).Formula = "='" & Cel.Value & "'!H8"
    Cel.Offset(0, 2).Formula = "='" & Cel.Value & "'!H9"
    Cel.Offset(0, 3).Formula = "='" & Cel.Value & "'!J8"
    Cel.Offset(0, 4).Formula = "='" & Cel.Value & "'!J9"
    Cel.Offset(0, 5).Formula = "='" & Cel.Value & "'!L8"
    Cel.Offset(0, 6).Formula = "='" & Cel.Value & "'!L9"
    Cel.Offset(0, 7).Formula = "='" & Cel.Value & "'!N8"
    Cel.Offset(0, 8).Formula = "='" & Cel.Value & "'!N9"
  End If
End Sub

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  On Error Resume Next
  Sheets(Target.Value).Activate
End Sub

La procédure générale

' Procédure générale
Sub FiltrerGenre(sGenre As String, Actif As Boolean)
  Dim Obj As Object, DLig As Long, LigF As Long
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  ' Pour 10 colonnes
  For i = 1 To 10
    nom = Choose(i, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
    Cells(17, i) = nom
    ' Avec la feuille de critères
    With Sheets("Critères")
      ' Inscrire la lettre de la colonne
      .Cells(1, i) = nom
      ' Si le FLAG est actif
      If Actif Then
        If i = 1 Then
          DLig = .Cells(Rows.Count, 1).End(xlUp).Row
          .Cells(DLig + 1, 1) = sGenre
        Else
          DLig = .Cells(Rows.Count, i - 1).End(xlUp).Offset(1, 0).Row
          .Range(.Cells(2, i), .Cells(DLig, i)).ClearContents
          .Range(.Cells(2, 1), .Cells(DLig, 1)).Copy _
              Destination:=.Cells(DLig, i)
        End If
      Else
        ' Sinon supprimer le critère
        If i = 1 Then
          LigF = .Range("A:A").Find(what:=sGenre).Row
          .Range("A" & LigF).Delete Shift:=xlUp
        Else
          DLig = .Cells(Rows.Count, i).End(xlUp).Offset(1, 0).Row
          .Range(.Cells(2, i), .Cells(DLig, i)).ClearContents
          DLig = .Cells(Rows.Count, i - 1).End(xlUp).Offset(1, 0).Row
          .Range(.Cells(2, 1), .Cells(DLig, 1)).Copy _
              Destination:=.Cells(DLig, i)
        End If
      End If
    End With
  Next i
  Range("A17:J" & Range("A" & Rows.Count).End(xlUp).Row).AdvancedFilter _
      Action:=xlFilterInPlace, CriteriaRange:=Range("TabCrit"), Unique:=False
  Range("A17:A10").ClearContents
  Application.EnableEvents = True
End Sub

A+

Bonsoir Bruno!

Code installé et fonctionnel sur mon fichier, mais bizarrement il met plus de temps à défiltrer sur mon fichier que sur le fichier test alors qu'il y a le même nombre de lignes...

Normal? En tout cas merci, et je compte ouvrir un sujet pour le filtre cumulé dans quelque temps donc si jamais tu as des connaissance pour je te dis à très vite

Bonne soirée!

Bonjour Zayx

Zayx a écrit :

Code installé et fonctionnel sur mon fichier, mais bizarrement il met plus de temps à défiltrer sur mon fichier que sur le fichier test alors qu'il y a le même nombre de lignes... Normal?

Je dirais, étrange

Il n'y a pas de raison, il faut lancer le code en pas à pas (F8) pour voir ce qui se passe

Zayx a écrit :

je compte ouvrir un sujet pour le filtre cumulé dans quelque temps donc si jamais tu as des connaissance pour je te dis à très vite

Heeuuuu, c'est ce que j'ai fait dans le fichier que tu as

Mais le filtre cumulé se fait par la condition "ou" à voir le résultat que tu veux obtenir

A+

Bonjour Bruno, le forum!

BrunoM45 a écrit :

Bonjour Zayx

Je dirais, étrange

Il n'y a pas de raison, il faut lancer le code en pas à pas (F8) pour voir ce qui se passe

Pas compris

Pour ma part j'aimerai que si je coche deux checkbox et bien qu'il m'affiche les lignes ou il y a ces deux critères et non pas l'un OU l'autre.

Voila voila, j'attends de tes nouvelles Merci encore!

Up!

Re up pour Bruno en espérant que tu refasse présence sur ce sujet pour peaufiner ce qui doit l'être car pas encore réussi à faire ce que j'ai demandé dans mon dernier message.

A très vite j'espère!

Rechercher des sujets similaires à "defiltrer second clic case cocher"