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 :

code vba filtre auto multi critère


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    technicien sup
    Inscrit en
    Juillet 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien sup

    Informations forums :
    Inscription : Juillet 2018
    Messages : 18
    Par défaut code vba filtre auto multi critère
    Bonjour tout le monde,

    j'ai besoin de faire un filtre multi critère, j'ai fait ce code, mais y a quelque chose qui bug ....

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Criteres As Variant
     
        'compte le nombre de lignes et colonnes
            Range("A1").Select
            nblignes = Range("A1", Selection.End(xlDown)).Cells.Count
            nbColonnes = Range("A1", Selection.End(xlToRight)).Cells.Count
     
    'Les critères de recherche
    Criteres = Array("Approved", "Cancelled", "Closed", "Commitment made", "Completed", "Dispatched", "On-going", "Open", "Planned", "Positive Opinion", "Reclassified Downgrade", "Submitted", "No submission required", "Submitted to Agency")
     
    ActiveSheet.Range("A1:" & nbColonnes & nblignes).AutoFilter Field:=11, Criteria1:=Criteres, Operator:=xlFilterValues
    Si quelqu'un a une solution, je suis preneur
    Merci par avance pour votre aide
    Laurent

  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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("A1").AutoFilter Field:=11, Criteria1:=Criteres, Operator:=xlFilterValues
    Boisgontier

  3. #3
    Membre averti
    Homme Profil pro
    technicien sup
    Inscrit en
    Juillet 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien sup

    Informations forums :
    Inscription : Juillet 2018
    Messages : 18
    Par défaut
    Super ça fonctionne

    Merci à toi Boisgontier

  4. #4
    Membre averti
    Homme Profil pro
    technicien sup
    Inscrit en
    Juillet 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien sup

    Informations forums :
    Inscription : Juillet 2018
    Messages : 18
    Par défaut
    désolé, je viens de me rendre compte qu'en fait j'ai besoin de ce code mais en sens inverse, en excluant les critères, voici le code que j'ai fait, mais ça bug ... bien évidemment !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("A1").AutoFilter Field:=11, Criteria1:="<>" & Criteres, Operator:=xlFilterValues
    Sais-tu d'où ça peut venir ?

    Merci par avance pour ton aide
    Laurent

  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
    Bonjour,

    En PJ, un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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
    Membre averti
    Homme Profil pro
    technicien sup
    Inscrit en
    Juillet 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien sup

    Informations forums :
    Inscription : Juillet 2018
    Messages : 18
    Par défaut
    désolé, mais je suis pas arrivé à modifier ton code pour le mettre à mon gout, enfin à l'appliquer à mon fichier. je te joins une copie de mon fichier.

    Concernant la liste des filtres a appliquer il sont dans la feuille qui se créé automatiquement grâce a la macro.
    En fait, le but de cette manœuvre est que je souhaite conservé que ces infos qui se trouve dans la colonne K et supprimer toutes les lignes qui n'ont pas ces infos en K.

    Ne sachant pas comment faire, je pensais faire un filtre sans ces infos, et supprimer les lignes restantes pour effacer le filtre après afin de conserver que les infos nécessaires... j'espère que je suis assez clair ... donc si tu trouves une meilleure solution je suis preneur

    Merci par avance pour tout ton temps consacré à m'aider
    Fichiers attachés Fichiers attachés

  7. #7
    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
    Sélectionne ceux qui ne sont pas dans la liste:

    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
    18
    19
     
    Sub FiltreInverseListe()
      Set f1 = Sheets("raw data")
      Set d = CreateObject("scripting.dictionary")
      d.CompareMode = vbTextCompare
      Liste = Array("Approved", "Cancelled", "Closed", "Commitment made", "Dispatched", "On-going", "Open", "Planned", "Positive Opinion", "Reclassified Downgrade", "No submission required", "Submitted to Agency")
      For Each c In Liste: d(c) = "": Next c
      Set f2 = Sheets("raw data")
      Set d2 = CreateObject("scripting.dictionary")     ' liste complémentaire
      d2.CompareMode = vbTextCompare
      For Each c In f2.Range("K2:K" & f2.[K65000].End(xlUp).Row)
       If Not d.exists(c.Value) Then d2(c.Value) = ""
      Next c
      If d2.Count > 0 Then
        ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=11, Criteria1:=d2.keys, Operator:=xlFilterValues
      Else
        MsgBox "Pas de Filtre!"
      End If
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  8. #8
    Membre averti
    Homme Profil pro
    technicien sup
    Inscrit en
    Juillet 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien sup

    Informations forums :
    Inscription : Juillet 2018
    Messages : 18
    Par défaut
    Merci à toi Boisgontier ...

    ça fonctionne du feu de dieu !!!

    merci pour ton aide

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

Discussions similaires

  1. [XL-2010] code vba filtre auto
    Par lolo69490 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/07/2018, 12h59
  2. [XL-2010] Filtres élaborés multi critères (Dates - Texte)
    Par graphikris dans le forum Excel
    Réponses: 3
    Dernier message: 11/12/2013, 18h14
  3. [XL-2007] Filtre avancé multi critère couleur
    Par Jeanvaljean44 dans le forum Excel
    Réponses: 2
    Dernier message: 02/05/2013, 17h11
  4. [XL-2007] Code VBA filtre "Sélectionner tout"
    Par Nico las dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/10/2012, 15h08
  5. Filtres avancés multi critères
    Par jakadam dans le forum Excel
    Réponses: 2
    Dernier message: 21/11/2010, 01h33

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