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 textuel avec "Contient" en passant par un combobox [XL-2010]


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
    Ressources humaines
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut Filtre textuel avec "Contient" en passant par un combobox
    Bonjour,
    Je suis nouveau sur ce forum (c'est d'ailleurs mon premier !).
    Je me sers souvent des macros dans mes fichiers Excel, mais là je but, je sèche même sur un truc qui pourtant doit être évident !!!
    J'ai créé un Combobox pour filtrer mon tableau. Trois des filtres fonctionnent très bien mais le premier bloque.
    Ce 1er filtre doit filtrer une colonne dans laquelle je concatène les données de 4 autres colonnes (des initiales de noms) et sa particularité est qu'il utilise la condition "contient"...
    Tout ce que j'ai essayé me mène au même point ! le filtre masque toute les lignes du tableau !!!
    Voici les lignes de mon code :

    Si quelqu'un peut m'aider je le/la remercie par avance...

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Private Sub CommandButton1_Click()
     
        With Sheets("Taches")
     
        Sheets("Taches").Select
    ActiveSheet.Unprotect "****"
     
        Range("$B$1:$N$6000").AutoFilter Field:=13
        Range("$B$1:$N$6000").AutoFilter Field:=2
        Range("$B$1:$N$6000").AutoFilter Field:=8
        Range("$B$1:$N$6000").AutoFilter Field:=3
     
        '1 - filtre "CONTIENT" les initiales des employés (en masquant les taches terminées)      
        If ComboBox1 <> "" Then
            .Range("$B$16:$N$6001").AutoFilter Field:=13, Criteria1:="=*Range(p1)*", Operator:=xlFilterValues
            ActiveSheet.Range("$B$17:$N$6000").AutoFilter Field:=8, Criteria1:="<>Terminé", Operator:=xlAnd
        End If
     
        '2 - filtre les catégories (en masquant les taches terminées)
        If ComboBox2 <> "" Then
            .Range("$B$1:$N$6000").AutoFilter Field:=2, Criteria1:=Array(ComboBox2.Text), Operator:=xlFilterValues
            ActiveSheet.Range("$B$17:$N$6000").AutoFilter Field:=8, Criteria1:="<>Terminé", Operator:=xlAnd
        End If
     
        '3 - filtre l'état d'avancement
        If ComboBox3 <> "" Then
            .Range("$B$1:$N$6000").AutoFilter Field:=8, Criteria1:=Array(ComboBox3.Text), Operator:=xlFilterValues
        End If
     
        '4 - filtre les délais fixés (en masquant les taches terminées)
        If ComboBox4 <> "" Then
            .Range("$B$1:$N$6000").AutoFilter Field:=3, Criteria1:=Array(ComboBox4.Text), Operator:=xlFilterValues
            ActiveSheet.Range("$B$17:$N$6000").AutoFilter Field:=8, Criteria1:="<>Terminé", Operator:=xlAnd
        End If
     
    End With
     
        ComboBox1.Clear
        ComboBox2.Clear
        ComboBox3.Clear
        ComboBox4.Clear
     
        Application.GoTo Range("A1"), True
        Range("C3").Select
     
        Unload Me
        UserForm5.Show
     
        Application.ScreenUpdating = True
        ActiveSheet.Protect "****", DrawingObjects:=False, Contents:=True, Scenarios:= _
            True, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:= _
            True, AllowUsingPivotTables:=True
     
    ActiveWorkbook.save
    End Sub

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,


    si tu veux utiliser le contenu d'une variable et non son nom dans ton filtre tu dois sortir la variable des guillemets....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Criteria1:="=*" & Range(p1) & "*"

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut Filtre textuel avec "Contient" en passant par un combobox
    Bonsoir bbil,

    Tout d'abord j'ai bien pris note de tes conseils concernant l'utilisation des boutons mis à ma dispo sur le forum et je t'en remercie
    De plus, je savais que c'était simple, mais j'ai tourné en rond trop longtemps et ton aide m'a été propice...
    Sur tes conseils, j'ai juste remplacé l'appel à la cellule P1 par mon (ComboBox1.Text) et le tour était joué.

    Merci encore de ta rapidité et de ta dispo.

    Aldim13600

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

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