IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Filtre inverse multicritères, multicolonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut Filtre inverse multicritères, multicolonnes
    Bonjour,
    Je voudrais faire un premier filtre sur la colonne2 pour masquer les valeurs égale à 1 ou 2 et un sur la colonne 3 pour masquer les valeurs vide.
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activesheet.ListObjects("TbSaisies").Range.AutoFilter Field:=2, Criteria1:<>"1", Criteria2:<>2", Operator:=xlOr, Field:=3, Criteria1:=""
    Mais cela ne fonctionne pas, après Criteria, Excel veut "=" et non "<>"
    Est-ce que quelqu'un peut m'aider ?

    J'ai trouvé un code de Jacques Boisgontier qui permet le filtre inverse multicritères, mais sur une seule colonne et je n'arrive pas à déclarer la variable liste (j'ai essayé liste as object, as variant, as string rien ne fonctionne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub FiltreInverseListe()
    Dim f1 As Object, f2 As Object, d As Object, d2 As Object, c As Range, liste as ???
      Set f1 = Sheets("feuil1")
      Set d = CreateObject("scripting.dictionary")
      d.CompareMode = vbTextCompare
      liste = Array("paris", "lyon", "bordeaux")            ' Liste à ne pas sélectionner
      For Each c In liste: d(c) = "": Next c
      Set f2 = Sheets("feuil1")
      Set d2 = CreateObject("scripting.dictionary")     ' liste complémentaire
      d2.CompareMode = vbTextCompare
      For Each c In f2.Range("B2:B" & f2.[B65000].End(xlUp).Row)
       If Not d.exists(c.Value) Then d2(c.Value) = ""
      Next c
      ActiveSheet.Range("$A$1:$B$100").AutoFilter Field:=2, Criteria1:=d2.keys, Operator:=xlFilterValues
    End Sub
    Merci de votre aide

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Méthode générale. S'il n'y a que 2 valeurs à exclure, on peut utiliser Criteria1 et Criteria2.
    J'ai supposé que la colonne 2 était numérique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub FiltreInverseListe()
      Set d = CreateObject("scripting.dictionary")
      d.CompareMode = vbTextCompare
      Liste = Array(1, 2)           ' Liste à ne pas sélectionner
      For Each c In Liste: d(CStr(c)) = "": Next c
      Set d2 = CreateObject("scripting.dictionary")     ' liste complémentaire
      d2.CompareMode = vbTextCompare
      For Each c In [Tbsaisies[Num]]
        If Not d.exists(CStr(c.Value)) Then d2(CStr(c.Value)) = ""
      Next c
    [Tbsaisies].AutoFilter Field:=2, Criteria1:=d2.keys, Operator:=xlFilterValues
    [Tbsaisies].AutoFilter Field:=3, Criteria1:="<>"
    End Sub
     
    Sub supFiltre()
       [Tbsaisies].AutoFilter
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonsoir…

    avec un Tableau structuré nommé TbSaisies et un bouton bascule (ToggleButton) nommé Tg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Tg_Click()
        Application.ScreenUpdating = 0
        With [TbSaisies]
            .AutoFilter
            If Tg Then .AutoFilter 2, Criteria1:="<>1", Criteria2:="<>2": .AutoFilter 3, "<>"
        End With
    End Sub

  4. #4
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Citation Envoyé par OrDonc Voir le message
    Bonsoir…
    avec un Tableau structuré nommé TbSaisies et un bouton bascule (ToggleButton) nommé Tg
    Bonsoir OrDonc,
    Merci pour ta réponse, mais il n'y a pas de bouton à bascule, c'est une base de données dont je veux supprimer des enregistrements.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    bonsoir ...

    un exemple avec le dernier fichier de Jacques (merci)
    Fichiers attachés Fichiers attachés

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,


    >c'est une base de données dont je veux supprimer des enregistrements.



    Je suppose qu'il faut conserver les codes 1 et 2

    Suppression de lignes rapide d'un tableau structuré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub supLignesRapide()
      Application.ScreenUpdating = False
      codes = Array(1, 2, 6) ' codes à conserver
      a = [TbSaisies]
      ReDim b(1 To UBound(a), 1 To 1)
      For i = LBound(a) To UBound(a)
        If IsError(Application.Match(a(i, 2), codes, 0)) Then b(i, 1) = "sup" Else b(i, 1) = 0
      Next i
      Range("TbSaisies[#all]").Columns(2).Insert Shift:=xlToRight
      [TBSaisies[colonne1]].Resize(UBound(b)) = b
      [TbSaisies].Sort Key1:=[TBSaisies[colonne1]], Order1:=xlAscending, Header:=xlYes
      On Error Resume Next
      [TBSaisies[colonne1]].SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
      [TBSaisies[colonne1]].Delete Shift:=xlToLeft
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  7. #7
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour Monsieur,

    Merci beaucoup pour votre réponse, c'est super rapide.

    Pourriez-vous me dire comment je dois déclarer la variable "liste", svp ?
    Merci

Discussions similaires

  1. Filtre inverse de Butterworth d'ordre 5
    Par Imadsylla dans le forum Traitement du signal
    Réponses: 0
    Dernier message: 09/07/2019, 16h03
  2. Filtres horizontaux multicritères avec userform
    Par nananinanana dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/02/2017, 15h27
  3. [Débutant] filtre Recherche multicritère
    Par santana45 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/11/2016, 17h13
  4. [XL-2010] Filtre élaboré multicritères qui ne fonctionne pas
    Par lolowings dans le forum Excel
    Réponses: 7
    Dernier message: 05/01/2015, 17h24
  5. [XL-2007] Filtre avancé - Multicritères variables
    Par sunstrike69 dans le forum Excel
    Réponses: 1
    Dernier message: 30/12/2009, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo