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

Excel Discussion :

VBA - Autofilter : Filtre multi colonnes et multi critères avec OR. Réponse : Impossible ! [XL-2010]


Sujet :

Excel

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut VBA - Autofilter : Filtre multi colonnes et multi critères avec OR. Réponse : Impossible !
    Bonjour,


    La méthode AutoFilter permet-elle de filtrer sur plusieurs colonnes avec des critères avec OR.

    Voici un bout de code qui permet de copier depuis un fichier Excel des données selon des critères via SQL


    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Public Function fTranfertSQL()
     
        Dim oCnx As New ADODB.Connection
        Dim oRSet As New ADODB.Recordset
        Dim oFld As Object
        Dim sCnx As String, sFile As String, sTab As String,  sRange As String, sFrom As String, sSQL As String
     
        sFile = "C:\Users\Desktop\FichierTest.xlsx"
     
        With oCnx
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = "Data Source=" & sFile & ";" & _
                                "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
            .Open
        End With
     
        sTab = "Liste" : sRange = "A2:V243" : sFrom = sTab & "$" & sRange
     
        '--------------------------------------------------------------------------------
        ' le point(.) dans un nom de champ doit être remplacé par dièse (#)
        '--------------------------------------------------------------------------------
     
        sSQL = "SELECT * FROM [" & sFrom & "]" & _
                " WHERE [Type] = 'Arbres'" & _
                " AND [fév#] = 'x' " & _
                " OR [mars] = 'x'"
     
        oRSet.Open sSQL, oCnx
     
        With Sheets(2)
     
            If .FilterMode = True Then .ShowAllData
     
            .Cells.Clear
            .Range("A2").CopyFromRecordset oRSet
     
            For Each oFld In oRSet.Fields
                .Range("A1").Offset(0, i) = oFld.Name
                i = i + 1
            Next
     
        End With
     
        oCnx.Close : Set oCnx = Nothing : Set oRSet = Nothing
     
    End Function
    Ma question est donc comment avec Autofilter je peux avoir le même résultat que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      sSQL = "SELECT * FROM [" & sFrom & "]" & _
                " WHERE [Type] = 'Arbres'" & _
                " AND [fév#] = 'x' " & _
                " OR [mars] = 'x'"
    Car quand on applique AutoFilter sur plusieurs colonnes, cela correspond implicitement à du AND

  2. #2
    Membre expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 531
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonsoir

    Non, le filtre automatique ne permet pas de faire des OU.

    Il faut utiliser pour cela les filtres avancés. On doit bien trouver sur DVP, un petit tuto là-dessus.

    En tout cas, c'est un peul plus long à mettre en place, mais plus puissant que les filtres automatiques. En effet, il faut une zone de critères en plus. Par contre, on peut avoir une zone d'extraction, ce qui évite les copier-coller des valeurs filtrées.

    En espérant que cela aide

    Bonne soirée

    Pierre Dumas

  3. #3
    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 025
    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 025
    Points : 29 109
    Points
    29 109
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il faut utiliser pour cela les filtres avancés. On doit bien trouver sur DVP, un petit tuto là-dessus.
    Voir mon tutoriel sue le sujet Les filtres avancés ou élaborés dans Excel . Cependant, Power Query peut certainement apporter également une solution.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Merci Pierre et Philippe pour votre aide et pour confirmation qu'AutoFilter ne permet pas de faire des sélections complexes avec OR

    Bonne soirée à tous les deux

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

Discussions similaires

  1. Filtrer sur plusieurs feuilles avec VBA
    Par Tikalins dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/07/2015, 10h48
  2. Réponses: 7
    Dernier message: 04/01/2011, 11h47
  3. Etat sur plusieurs colonnes avec saut de section
    Par Binpush dans le forum IHM
    Réponses: 4
    Dernier message: 26/02/2009, 15h54
  4. [2.0.1] Filtrer sur les colonnes avec BIRT
    Par nikado dans le forum BIRT
    Réponses: 2
    Dernier message: 07/08/2007, 13h22
  5. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 16h22

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