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 d'exclusion


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Par défaut Filtre d'exclusion
    Bonjour,

    J'ai besoin d'appliquer un filtre Excel pour n'afficher que les lignes dont la colonne C ne contient pas les valeurs suivantes :

    /home
    /calendar
    /documents
    /wiki
    /news

    J'ai mis en place le filtre suivant qui fonctionne bien pour ne conserver QUE les lignes contenant ces valeurs dans la colonne C.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub FiltreURL()
    ActiveSheet.Range("C2").AutoFilter Field:=3, Criteria1:=Array( _
           "/home", "/calendar", "/documents", "/wiki", _
           "/news"), Operator:=xlOr
    End Sub
    À présent il faut que le filtre fasse l'inverse. Il ne faut afficher QUE les lignes NE contenant PAS ces valeurs dans la colonne C.

    J'ai essayé plusieurs solutions sans succès.

    Pourriez-vous m'aider ?

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Sans doute les filtres avancés de l'ami Philippe.

    Filtres avancés/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Par défaut
    Merci mais je ne trouve pas réponse à mon problème.
    Il me faut un filtre d'exclusion.
    Actuellement mon filtre fonctionne, mais il conserve les lignes des données listées.
    Je souhaite qu'il exclue les lignes de valeurs listées.

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Il te suffit de répéter dans ta zone de critères l'en-tête de colonne autant de fois que de critère à exclure et à placer "<>" devant chacun des critères.
    Sauf erreur, c'est bien ce qui est écrit dans le tutoriel de Philippe.

    Je viens de tester.

    Bien entendu, tu peux créer et alimenter un 2ème Array des valeurs qui ne sont pas comprises dans le 1er, sans doublon.
    (notions de tableau et dictionnaire)
    Le filtre s'effectuerait sur ce 2ème Array.

    Mais ce serait plus compliqué.

    Personnellement, et sans flagornerie aucune, je privilégierais la 1ère solution.

  5. #5
    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
    Bonsoir,

    3 exemples en PJ

    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()
      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
    Boisgontier
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Merci mais je ne trouve pas réponse à mon problème.
    Il me faut un filtre d'exclusion.
    Actuellement mon filtre fonctionne, mais il conserve les lignes des données listées.
    Je souhaite qu'il exclue les lignes de valeurs listées.
    Le filtre avancé d'excel pour autant que tes données soient bien structurées selon les règles permet de filtrer sur place ou d'exporter en fonction d'autant de critères que tu veux.
    Il suffit simplement de définir tes critères et tu peux également utiliser un critère calculé en créant une formule qui renvoie VRAI ou FAUX tout ce qui est VRAI est filtré ou exporté
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Par défaut
    Citation Envoyé par boisgontierjacques Voir le message
    Bonsoir,

    3 exemples en PJ

    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()
      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
    Boisgontier
    Merci pour ce retour.
    Ta version "Copie de FiltreInverseListe.xlsm" serait celle qui répond le plus à mon besoin.
    J'ai fait plusieurs essais, mais je ne parviens pas à aboutir au bon résultat final.
    En fait, j'aurai besoin qu'au lieu de se baser sur une liste de valeurs à exclure dans la feuil1, cette liste soit dans la feuil2.
    Et j'aurai que le test des valeurs présentes se fasse sur la colonne C de la feuil1 et non la colonne B

    Mes ajustements dans ce sens de ton fichier n'ont pas fonctionné. A chaque fois ça me vide toute les données de ma feuil1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Filtre avec exclusion des cellules vides
    Par denisw95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/08/2018, 19h07
  2. [QtGui] Filtre exclusion dans un QSortFilterProxyModel
    Par Triton972 dans le forum PyQt
    Réponses: 2
    Dernier message: 08/05/2014, 06h12
  3. Filtre d'exclusion élaboré
    Par canardav77 dans le forum Excel
    Réponses: 18
    Dernier message: 01/03/2013, 14h16
  4. [XL-2003] Filtre automatique exclusion
    Par gus02 dans le forum Excel
    Réponses: 1
    Dernier message: 17/02/2010, 14h23
  5. [Visual Web] Filtres sur pages avec 1 exclusion
    Par flotho dans le forum NetBeans
    Réponses: 0
    Dernier message: 28/09/2009, 09h08

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