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 automatique dans userform [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 73
    Par défaut Filtre automatique dans userform
    Bonjour tout le monde
    Je joins mon fichier pour mieux m'aider.
    je veux mettre des filtres avec les cbox dans mon fichier et je n'arrive pas. Surtout, je veux pouvoir filtrer sur la colonne A qui contient des dates.
    Un coup de pouce sera très apprécié de votre part.

    J'ai mis un bouton recherche, mais peut être que je devrais y aller avec l'option combobox change. Vous me direz quoi faire.
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Dans ton cas, j'utiliserais les filtres auto de ton onglet données puis j'alimenterais ma listview avec les lignes non cachées

    Chargement de la listview dans une procédure qui utilise elle même une procédure de filtre
    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
    Sub ChargeList()
    Dim i As Long
     
    'filtre
    Filtre "", "", "", ""
     
    Filtre ComboBox1.Text, ComboBox2.Text, ComboBox3.Text, ComboBox4.Text
     
     
    With Me.ListView1
     .ListItems.Clear
        With .ColumnHeaders
           .Clear
           .Add , , "Date", 110, lvwColumnLeft
           .Add , , "Prénom", 100, lvwColumnLeft
           .Add , , "Nom", 100, lvwColumnLeft
           .Add , , "Titre", 100, lvwColumnCenter
           .Add , , "Quart", 100, lvwColumnCenter
           .Add , , "Heure", 100, lvwColumnCenter
           .Add , , "Hopital", 100, lvwColumnCenter
           .Add , , "Étage", 100, lvwColumnCenter
           .Add , , "Taux", 100, lvwColumnCenter
           .Add , , "Montant", 105, lvwColumnCenter
        End With
     .View = lvwReport
     .FullRowSelect = True
     .Gridlines = True
            For i = 8 To Sheets("Données").Range("A65536").End(xlUp).Row
                If Sheets("Données").Rows(i).Hidden = False Then
                    .ListItems.Add , , Sheets("Données").Cells(i, 1)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 2)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 3)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 4)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 5)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 6)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 7)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 8)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 9)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Données").Cells(i, 10)
               End If
            Next
    End With
    End Sub



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Filtre(champ1 As String, champ2 As String, champ3 As String, champ4 As String)
     
    Range("A7:J7").Select
     
    Selection.AutoFilter
     
    If champ1 <> "" Then Selection.AutoFilter Field:=1, Criteria1:=champ1, VisibleDropDown:=False
    If champ2 <> "" Then Selection.AutoFilter Field:=2, Criteria1:=champ2, VisibleDropDown:=False
    If champ3 <> "" Then Selection.AutoFilter Field:=3, Criteria1:=champ3, VisibleDropDown:=False
    If champ4 <> "" Then Selection.AutoFilter Field:=7, Criteria1:=champ4, VisibleDropDown:=False
     
    End Sub
    Filtre auto dans Userform.zip

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 73
    Par défaut
    Merci beaucoup JFontaine
    j'apprécie grandement ce que tu me proposes, mais le filtre ne marche pas avec la colonne date (A).
    Peux-tu le fixer pour moi.

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bah la, je cale

    Truc bizard, si tu utilises l'enregistreur de macro pour filtre ne date, il te proposera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.AutoFilter Field:=1, Criteria1:="=01-juil-11", Operator:=xlAnd
    Par contre si tu lances la macro, il ne trouve pas la date et retourne alors aucune ligne

    Si quelqu'un a une idée, car se serait dommage de partir sur une autre voie si prêt du but


    Une modif pour coller a l'enregistreur de macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Filtre(champ1 As String, champ2 As String, champ3 As String, champ4 As String)
     
    Range("A7:J7").Select
     
    Selection.AutoFilter
     
    If champ1 <> "" Then Selection.AutoFilter Field:=1, Criteria1:="=" & CDate(Format(champ1, "dd-mmm-yy")), VisibleDropDown:=False
    If champ2 <> "" Then Selection.AutoFilter Field:=2, Criteria1:=champ2, VisibleDropDown:=False
    If champ3 <> "" Then Selection.AutoFilter Field:=3, Criteria1:=champ3, VisibleDropDown:=False
    If champ4 <> "" Then Selection.AutoFilter Field:=7, Criteria1:=champ4, VisibleDropDown:=False
     
    End Sub

  5. #5
    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
    Un exemple d’illustration avec les dates (je n'ai pas encore compris le pourquoi)

    Dans TextBox1 une date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Champs1 As Long
     
    Champs1 = DateValue(TextBox1)
    With Sheets("Feuil1")
        .AutoFilterMode = False
        .Range("A:A").AutoFilter field:=1, Criteria1:="<=" & Champs1, Criteria2:=">=" & Champs1, Operator:=xlAnd
    End With
    PS: Peut on se surpasser des Select et Selection?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Salut mercatog,

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If champ1 <> "" Then Selection.AutoFilter Field:=1, Criteria1:="<=" & champ1, Criteria2:=">=" & champ1, Operator:=xlAnd, VisibleDropDown:=False
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If champ1 <> "" Then Selection.AutoFilter Field:=1, Criteria1:="<=" & Format(champ1, "dd-mmm-yy"), Criteria2:=">=" & Format(champ1, "dd-mmm-yy"), Operator:=xlAnd, VisibleDropDown:=False
    Mais toujours le même problème

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

Discussions similaires

  1. [AC-2007] Filtres automatiques dans un formulaire
    Par vandrie dans le forum IHM
    Réponses: 1
    Dernier message: 06/09/2010, 17h23
  2. [XL-2003] Filtre Automatique dans tableau
    Par Tintou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/03/2010, 18h15
  3. données automatiques dans userform
    Par mdambreville dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 17/05/2009, 14h22
  4. Filtre automatique dans combobox VBA
    Par fabien114 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/10/2008, 17h25
  5. [Excel] Récupération d'un filtre automatique dans une cellule
    Par billy123 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/03/2007, 15h32

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