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 :

Filtres avancées via VBA (Listbox) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Par défaut Filtres avancées via VBA (Listbox)
    Bonjour à tous (ou Bonsoir)

    Je vous expose mon problème:
    J'ai des données disposées comme dans le tableau ci-dessous.
    J'ai un userform qui me permet de choisir plusieurs dates via une listbox (où doublons sont traités et tout est classé par ordre alphabétique - ordre croissant).

    Ce que je souhaiterai c'est pouvoir copier les lignes par rapport aux dates sélectionnées, c'est à dire que si on coche 2014 et 2016, on copie toutes les lignes où 2014 et 2016 apparaissent..
    J'y arriverai si celles-ci étaient classées les unes à la suite des autres mais comme vous pouvez le voir ce n'est pas le cas...

    Je me suis donc dit que via des filtres avancées on pourrait faire ça mais je ne vois pas comment attribuer les bons critères (sélectionnées dans la listbox) à l'Autofilter via VBA... Pourriez vous m'aider?

    Merci par avance .

    2014 Moteur
    2014 Ecran
    2015 Moteur
    2013 Cable
    2013 Autre
    2014 Ecran
    2016 Cable
    2016 Ecran
    2016 Moteur
    2014 Prise
    2016 Levier
    2015 Moteur
    2014 Ecran
    2017 Autre

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Le filtre avancé n'est pas l'autofilter.

    Vois cet excellent didacticiel de Philippe et notamment le chapitre XII une fois compris les autres http://philippetulliez.developpez.co...dvancedfilter/.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Par défaut
    Ah oui effectivement, je regarde avec les filtres avancées si je peux faire ce que je souhaite car j'essayais de le faire via l'autofilter mais ça me parait possible de le faire sans en fait

    Je reviens à vous si besoin, je mets le sujet résolu (ou non) dès que j'ai fini mes essais.

    Merci !

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Honnêtement, avec une boucle tu le fais sans souci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        'là tu analyses ta cells(i, "A") et tu ajoutes à ta liste cells(i,"B")
         Select Case True
               Case CheckBox2012.Value = True And Cells(i,"A").Value = 2012
                   ListBox1.AddItem Cells(i,"B").Text
               Case CheckBox2013.Value = True And Cells(i,"A").Value = 2013
                   ListBox1.AddItem Cells(i,"B").Text
               Case CheckBox2014.Value = True And Cells(i,"A").Value = 2014
                   ListBox1.AddItem Cells(i,"B").Text
               Case CheckBox2015.Value = True And Cells(i,"A").Value = 2015
                   ListBox1.AddItem  Cells(i,"B").Text
         End Select
    Next i
    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
    Dim Cell As Range
    For Each Cell In Range("A1",Range("A" & Rows.Count).End(xlUp))
         'là tu analyses Cell et tu ajoutes à ta liste Cell.Offset(0,1) du style
         Select Case True
               Case CheckBox2012.Value = True And Cell.Value = 2012
                   ListBox1.AddItem Cell.Offset(0,1).Text
               Case CheckBox2013.Value = True And Cell.Value = 2013
                   ListBox1.AddItem Cell.Offset(0,1).Text
               Case CheckBox2014.Value = True And Cell.Value = 2014
                   ListBox1.AddItem Cell.Offset(0,1).Text
               Case CheckBox2015.Value = True And Cell.Value = 2015
                   ListBox1.AddItem Cell.Offset(0,1).Text
         End Select
    Next Cell

    Sinon avec Find et FindNext mais je pense que ça peut être plus chiant...

    Bon, ces solutions sont pas très pratiques mais si tu n'as que quelques CheckBox alors c'est ok et ça te permet de traiter différemment les années si besoin. (ok, une seule ligne avec un If assez long ferait exactement l'affaire, mais cette solution est plus visuelle et surtout elle permet le traitement différent si besoin)

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Le filtre avancé est plus rapide que les boucles : des commentaires en ce sens on été fait lors de la publication du didacticiel...

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Par défaut
    Désolé, je m'étais absenté,

    J'ai réussi à faire un code me permettant de modifier mes critères de filtres avancées selon ce qui avait été sélectionné,
    J'essaie de poster tout ça d'ici demain.

    Merci pour tout!

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

Discussions similaires

  1. [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, 10h35
  2. [XL-2013] Filtre Avancé - VBA
    Par qboullier dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2014, 13h57
  3. [XL-2007] Filtre et tri sur Excel via vba
    Par benol3 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/06/2014, 09h33
  4. [Toutes versions] filtre TCD via macro vba sur texte contenu
    Par fomy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/08/2012, 09h35

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