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 dans VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 42
    Par défaut filtre dans VBA
    Bonjour,

    J'ai quelques petits problèmes pour créer un code VBA.
    J'ai 3 critères que l'utilisateur peut choisir à l'aide d'une liste déroulante.
    1 er critère : la date (B3)
    2 eme critère : la région (C3)
    3 ème critère : la ville (D3)

    Le but est que lorsque utilisateur choisit ces critères , un filtre permet d'apparaître que les données demandées dans la base de donnée.
    Pour ces 3 critères ,dans chaque liste déroulante, il y a "tous" qui permet de sélectionner toutes les données dans chaque liste déroulante.

    J'ai commencé un code.
    Pour résumer le code, si je sélectionne "tous" pour un critère alors je filtre selon les deux autres critères.Je les réécris trois fois en simulant le "tous" pour chaque critère.Mais si je ne sélectionne pas "tous "dans un des 3 critères le code ne fonctionne pas.

    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
    Sub essai()
    Range("a5:aj6900").Select
     Selection.AutoFilter
     
    If Range("b3").Value = "TOUS" Then
    Selection.AutoFilter Field:=4, Criteria1:=[C3], Operator:=xlAnd
    Selection.AutoFilter Field:=36, Criteria1:=[d3], Operator:=xlAnd
    Else
    Cells.EntireRow.Hidden = False
    End If
    If Range("C3").Value = "TOUS" Then
    Selection.AutoFilter Field:=1, Criteria1:=[B3], Operator:=xlAnd
    Selection.AutoFilter Field:=36, Criteria1:=[d3], Operator:=xlAnd
    Else
    Cells.EntireRow.Hidden = False
    End If
    If Range("D3").Value = "TOUS" Then
    Selection.AutoFilter Field:=1, Criteria1:=[B3], Operator:=xlAnd
    Selection.AutoFilter Field:=4, Criteria1:=[C3], Operator:=xlAnd
    Else
    Cells.EntireRow.Hidden = False
    End If
    End Sub
    Pouvez-vous svp m'aider?

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Mettre ce code dans l'évènement Change de ta feuille
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim CritB As Variant, CritC As Variant, CritD As Variant
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    If InStr("B3C3D3", Target.Address(0, 0)) > 0 Then
        With ActiveSheet
            .AutoFilterMode = False
            LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
            CritB = IIf(IsDate(.Range("B3").Value), Format(.Range("B3").Value, "dd/mm/yyyy"), "")
            CritC = IIf(UCase(.Range("C3").Value) = "TOUS", "", .Range("C3").Value)
            CritD = IIf(UCase(.Range("D3").Value) = "TOUS", "", .Range("D3").Value)
            With .Range("A5:AJ" & LastLig)
                If CritB <> "" Then .AutoFilter Field:=1, Criteria1:=CritB
                If CritC <> "" Then .AutoFilter Field:=4, Criteria1:=CritC
                If CritD <> "" Then .AutoFilter Field:=36, Criteria1:=CritD
            End With
        End With
    End If
    End Sub

Discussions similaires

  1. [AC-2003] resultat filtré dans une zone de liste (sans VBA)
    Par alexane dans le forum IHM
    Réponses: 1
    Dernier message: 05/05/2011, 13h46
  2. Réponses: 4
    Dernier message: 22/02/2008, 10h02
  3. VBA Filtre dans requête
    Par gbzmt dans le forum VBA Access
    Réponses: 0
    Dernier message: 06/02/2008, 07h40
  4. [VBA-Excel] Faire un filtre dans un tableau croisé dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2006, 15h05
  5. Filtre sous formulaire dans Vba
    Par lito74 dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2006, 10h42

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