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 multicritères vba [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par défaut Filtre multicritères vba
    Bonjour;

    j'aimerais filtrer un tableau de 3 colonnes avec le contenu de 3 cellules ,si une des cellules est renseignée tout le tableau doit être filtré après avoir cliquer sur un bouton que j'ai lié à la macro .
    je suis parvenu avec le code ci-dessous à filtrer avec le contenu d'une seul cellule . j'ai besoin de votre aide pour pouvoir filtrer au choix en fonction de la cellule renseignée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Sub Macro1()
        Dim t,v,s As String
        t = "*" + CStr(ActiveSheet.Range("A1").Value) + "*"
       ' v = "*" + CStr(ActiveSheet.Range("B1").Value) + "*"
        's = "*" + CStr(ActiveSheet.Range("C1").Value) + "*"
        ActiveSheet.Range("$A$2:$C$25000"). _
        AutoFilter Field:=1, Criteria1:=t
       ' .AutoFilter Field:=1, Criteria1:=v
     
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour simo001

    Tu as le tutorial sur Les filtres avancés ou élaborés dans Excel

    ou

    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 Autofiltre()
     
    a = ActiveSheet.Range("A2").Value
    b = ActiveSheet.Range("B2").Value
    c = ActiveSheet.Range("C2").Value
     
        Range("A4").AutoFilter
        If a <> "" Then
        ActiveSheet.Range("$A$4:$C$10").AutoFilter Field:=1, Criteria1:=a
        End If
        If b <> "" Then
        ActiveSheet.Range("$A$4:$C$10").AutoFilter Field:=2, Criteria1:=b
        End If
        If c <> "" Then
        ActiveSheet.Range("$A$4:$C$10").AutoFilter Field:=3, Criteria1:=c
        End If
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par défaut
    salut

    merci pour ton retour ,je n'ai pas vraiment trouvé sur le tuto ce que je cherche exactement en revanche ton code est très utile seulement quand je l'ai essayé avec la condition <>"" ça na pas donner de résultat je l'ai remplacé donc par len(a)>0 qui marche très bien, mais le problème reste le même ma macro filtre avec le champ A1 et ne reconnait les autres champs

    exemple de mon code :
    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 Macro1()
        Dim a As String
        Dim b As String
        a = "*" + Trim(CStr(ActiveSheet.Range("A1").Value)) + "*"
        b = "*" + Trim(CStr(ActiveSheet.Range("B1").Value)) + "*"
        Range("A5").AutoFilter
        If Len(a) > 0 Then
         ActiveSheet.Range("$A$5:$B$17").AutoFilter Field:=1, Criteria1:=a
        End If
        If Len(b) > 0 Then
        'Range("B5").AutoFilter
         ActiveSheet.Range("$A$5:$B$17").AutoFilter Field:=2, Criteria1:=b
        End If
    End Sub

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Plutôt que d'utiliser <>"" , utilise >""

    Je comprends que tu veux plusieurs éléments de la même colonne.
    Avec Autofilter, tu peux utiliser l'enregistreur de macros pour obtenir le code correspondant à tes sélections manuelles dans le Filtre.
    Tu vas obtenir quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Selection.AutoFilter
        ActiveSheet.Range("$A$5:$C$13").AutoFilter Field:=1, Criteria1:="=*albert*", _
            Operator:=xlOr, Criteria2:="=*Roger*"
    Avec le filtre élaboré, si tu veux demander plusieurs éléments de la même colonne, tu dois ajouter une ligne à la zone de critères pour chaque élément.

    Pour être plus technique, quand tu ajoutes une ligne à la zone de critères, tu ajoutes une condition "Or" (en français "OU")
    Exemple: Si la ligne contient Albert ou Roger, affiche-la.

    Quand tu ajoutes une colonne à la zone de critères, tu ajoutes au filtre une condition "And" (en français "ET")
    Exemple :
    Colonne A : >10
    Colonne B : <100

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par défaut
    En fait ce que je veux c'est filtrer la première colonne avec la variable a et la deuxième colonne avec la variable b si le champ correspondant n'est pas vide

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Voici un exemple d'Autofiltre et de Filtre élaboré avec un seul critère par colonne.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Filtre multicritères Excel/VBA
    Par cydzeboss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/12/2008, 11h43
  2. Filtre en VBA (Excel)
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/10/2007, 20h49
  3. [SQL] Requête Multicritère Vba
    Par holoaccess dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/04/2007, 11h00
  4. [débutante] recherche multicritère vba
    Par Mimi64 dans le forum IHM
    Réponses: 7
    Dernier message: 01/08/2006, 09h57
  5. PB code et filtre multicritères sur formulaire
    Par flagfight dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 16h36

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