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 avancé avec des choix multiple à l'aide des CheckBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 18
    Par défaut Filtre avancé avec des choix multiple à l'aide des CheckBox
    Bonjour,

    J'ai un problème avec le filtre à choix multiple. Dans un Userform j'ai 6 CheckBox nommées (CheckBa,CheckBb,CheckBc,CheckBd,Checke,CheckBf)et j aimerai que lorsque je coche 2 checkBox voir plus, que le filte de ma base de données puise être appliqué.

    je parviens pour l'instant à faire le filtre à l'aide d'une seule checkbox coché.
    voici 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
    Private Sub sendFormValuesToExcel()
        If (OptionS1) Then
            Range("J2").FormulaR1C1 = OptionS1.Caption
            If (CheckBa) Then
                Range("K2").FormulaR1C1 = "a"
            End If
        ElseIf (OptionS2) Then
             Range("J2").FormulaR1C1 = OptionS2.Caption
             'Range("K2").FormulaR1C1 = "a"
             'Range("P2").FormulaR1C1 = "b"
             'Range("P2").FormulaR1C1 = CheckBb.Caption
        End If
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub search()
        sendFormValuesToExcel
        Macrotrigroupe
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub OptionS1_Change()
        search
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Cmdfiltre_Click()
        search
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macrotrigroupe()
    '
    ' Macrotrigroupe Macro
    '
     
    '
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        Range("Tableau14[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange _
            :=Range("I1:P2"), CopyToRange:=Range("I6:O6"), Unique:=False
    End Sub

    merci d'avance pour l'aide.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Bell et bienvenu sur le Forum,

    Remarques
    - Pour le rendre plus accessible, tu peux baliser ton code par les bornes "#"
    - Pour affecter une valeur à une cellule, mieux vaut utiliser la propriété Value que Formula

    Pour ta problématique.
    Tout d'abord consulter le tutoriel de Philipe à ce sujet
    Dans ce cadre, tu peux nommer chaque cellule de ta zone de critères.
    Celles-ci seraient alimentées par le formulaire
    Le tutoriel comprend une partie VBA dont tu pourras t'inspirer

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 18
    Par défaut
    Bonjour MarcelG et merci pour les remarques,

    J'aimerai préciser que j'ai déjà eu à parcourir le tuto indiqué, mais je reste sur ma faim. je précise bien que j'ai bien fait mon filtre avancé sur excel qui ma généré une macro par la suite.

    je réussi aussi à faire le filtre à aide d'une seule checkbox coché, mais je veux que cela soit aussi possible lorsque le coche plusieurs checkbox.

    ma base de données est constitué comme suit:
    colonne A: matricule
    colonne B: nom
    colonne C: prénom
    colonne D:groupe ( il existe 6 groupe de a-f) je représente ceci dans nom userform par des checkbox.
    j'aimerai que en cochant les groupe a, d et f par exemple comme critère du tri, ma plage de résulta n'affiche que les individus appartenant à ce groupe.

    j'espère que j'ai mieux exposé mon problème merci

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Bell, Bonjour au Forum,

    Je reprends l'un des codes du tutoriel à un numéro de ligne près

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Filter()
      Range("A1:G16").AdvancedFilter _
             Action:=xlFilterInPlace, _
             CriteriaRange:=Range("I1:L4"), _
             Unique:=False
    End Sub
    (Pour l'instant, passons sur le rattachement des objets Range)

    Ici la plage de critères est I1:L4.
    Prenons l'une des cellules comprises dans ce Range. Exemple L3
    Si la cellule L3 est nommée "lacheck_a" alors le code peut exécuter l'information de cette cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Chx_lacheck_a = True Then Range("lacheck_a").Value = "a"
    Idem pour les autres cellule à informer au sein de la zone de critères.

    Le filtre s'effectuera donc en fonction des valeurs de contrôles du formulaire.

    Essaie d'adapter ton code en conséquence et reviens avec celui-ci dans son intégralité.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 18
    Par défaut
    Bonjour MarrcelG et à tous,

    En adaptant le code envoyé au mien, cela ne fonctionne pas bref il y plus de tri en fonction de mes critères de choix c'est toute ma base de données qui est repris dans la zone du filtre choisi.

    macro du filtre avancé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub tri_2()
    '
    ' tri_2 Macro
    '
     
    '
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        Range("Tableau14[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange _
            :=Range("I1:P5"), CopyToRange:=Range("I6:O6"), Unique:=False
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub sendFormValuesToExcel()
        If (OptionS1 = True) Then
            Range("J2").FormulaR1C1 = OptionS1.Caption
            If (CheckBa = True) Then Range("K2").Value = "a"
            If (CheckBb = True) Then Range("K3").Value = "b"
        ElseIf (OptionS2 = True) Then
             Range("J2").FormulaR1C1 = OptionS2.Caption
        End If
     
    End Sub

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Très bien.
    Joins un fichier sans données confidentielles.

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

Discussions similaires

  1. Tri croisé avec question à choix multiple SAS
    Par Fly stat dans le forum SAS STAT
    Réponses: 11
    Dernier message: 06/05/2016, 16h32
  2. [XL-2010] Problème Filtre avancé avec VBA
    Par jppnancy dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/04/2015, 11h35
  3. Réponses: 0
    Dernier message: 10/12/2011, 20h56
  4. Poster une sélection multiple avec des checkbox
    Par Sub0 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 02/11/2011, 18h17

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