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 :

MACRO - filtre avancé


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut MACRO - filtre avancé
    Bonjour les amis,

    J'ai besoin de votre aide. J'essai de faire un filtre avancé avec plusieurs critère mais il ne marche pas correctement.

    Quelqu'un peut m'aider?

    En plus j'arrive pas à utiliser le critère entre deux dates.

    Ci-joint le fichier avec les données pour mieux comprendre ce que je cherche à faire.
    filtre_avancé.xlsx

    Merci d'avance!

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 816
    Points : 28 719
    Points
    28 719
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme beaucoup de contributeurs de ce forum, je n'ouvre pas les classeurs joints surtout lors de l'ouverture d'une discussion.
    Si tu exposais le problème dans son ensemble (Organisation de tes données, critères placés, etc.) agrémenté éventuellement d'une illustration des données, tu aurais plus de chances d'obtenir une réponse.

    Le ou les critères sont des tests logiques. Ils doivent donc renvoyer VRAI ou FAUX

    En attendant tu peux lire éventuellement ce tutoriel Les filtres avancés ou élaborés dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour

    Exemple simple d'extraction entre 2 dates

    Boisgontier
    Fichiers attachés Fichiers attachés

  4. #4
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    Merci pour vos réponses.

    Voici pour les critères :
    Nom : Capture.JPG
Affichages : 3334
Taille : 168,2 Ko

    Lorsque je fait un filtre avancé sur tous ces critères(sans les dates), cela ne fonctionne pas très bien.
    Dans l'exemple ci-dessous, le résultat me donne 3 lignes au lieu de 7 lignes

    resultat:
    Nom : Capture1.JPG
Affichages : 3248
Taille : 45,5 Ko

    sources de données :
    Nom : Capture2.JPG
Affichages : 3283
Taille : 110,2 Ko

    Macro :

    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
     
    Sub EXTRAIRE_FILTRE()
    '
    ' EXTRAIRE_FILTRE Macro
    '
     
    '
        Sheets("R?sultats").Select
        Range("AP4").Select
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        Application.CutCopyMode = False
        Sheets("DEMANDES").Range("tableauSource[#All]").AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=Sheets("crit?res").Range("E1:J2"), CopyToRange _
            :=Range("R?sultats!Extract"), Unique:=False
     
    End Sub

    Je ne sais pas si j'ai expliqué comme il faut.


    Je vais regarder le fichier de boisgontierjacques pour le filtre entre les dates.


    Merci encore!
    Images attachées Images attachées  

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    J'ai regardé ton fichier.

    Tu n'a pas de chance. Tu est tombé sur un des bugs des filtres sur les dates d'Excel.
    Suivant les versions, le comportement est différent.

    En ce qui te concerne, suivant que tu extrais manuellement ou par VBA, les dates du critère ne doivent pas être saisies de la même façon (il existe une parade).

    Je te joins ton fichier avec une saisie des dates par formulaire et extraction par VBA.


    Boisgontier
    Fichiers attachés Fichiers attachés

  6. #6
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    Merci beaucoup boisgontierjacques

    Ça marche le filtre par date.

    Y-a-il un moyen d'ajouter dans ton code tous les critères?
    Car avant la date j'avais déjà des soucis avec les autres critères. Séparément, ça fonctionne, mais une fois que je combine deux ou trois critères il ne fonctionne plus très bien.

    J'aimais aussi compter le nombre d'enregistrement du résultat. Mais la formule dans la cellule ne fonctionne pas également.

    Nom : Capture3.JPG
Affichages : 3195
Taille : 53,5 Ko


    Merci encore pour ton aide. c'est vraiment sympa!

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 816
    Points : 28 719
    Points
    28 719
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme l'a dit Jacques, il existe un problème lorsque l'utilisateur entre comme critère une date.
    Suite à une mauvaise interprétation du VBA et pour pallier le problème j'utilise une astuce qui consiste à placer une formule dans la zone des critères qui faire référence à la cellule qui contient la date

    Dans l'illustration ci-dessous, la zone des critères est en K1:M2
    La cellule K2 contient la formule
    et la cellule L2
    et comme on peut le voir, les cellules K6 et L6 contiennent une date encodée manuellement.

    Nom : AdvancedFilter Date.png
Affichages : 3212
Taille : 7,2 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    J'ai un pb pour les champs incomplets (le joker * ne fonctionne pas).

    Boisgontier
    Fichiers attachés Fichiers attachés

  9. #9
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    Merci à vous deux. Je peux déjà mettre résolu.

    boisgontierjacques, ton filtre et le décompte à l'air de marché comme il faut.

    Je ne comprend pas bien ta question. Mais pour le *, on peut peut-être remplacer dans les formules des critères :


    =SI($C$5="";"*";$C$5)

    par

    =SI($C$5="";"";$C$5)


  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 816
    Points : 28 719
    Points
    28 719
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne comprend pas bien ta question. Mais pour le *, on peut peut-être remplacer dans les formules des critères :
    =SI($C$5="";"*";$C$5)
    par
    =SI($C$5="";"";$C$5)
    Absolument. Si la cellule des critères est vide il ne prend pas en compte ce champ
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Philippe pour l'astuce du critère date.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    Merci beaucoup Philippe Tulliez

  13. #13
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    -Nouvelle version à cause des colonnes incomplètes - raison médicale - (joker * ne fonctionne pas) - à vérifier-
    -Les dates peuvent être saisies directement en format normal.

    Critère

    En E2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(SI($C$5="";VRAI;$C$5=DEMANDES!G2);SI($C$7="";VRAI;$C$7=DEMANDES!I2);SI($C$9="";VRAI;$C$9=DEMANDES!W2);SI($C$11="";VRAI;$C$11=DEMANDES!J2);SI($C$13="";OU(DEMANDES!N2<>"";ESTVIDE(DEMANDES!N2));DEMANDES!N2=$C$13);SI($C$15="";OU(DEMANDES!P2<>"";ESTVIDE(DEMANDES!P2));DEMANDES!P2=$C$15);ET(DEMANDES!K2>=$C$17;DEMANDES!K2<=$C$19))
    Extraction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Extrait2()
        Sheets("DEMANDES").Range("A1:AM10000").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Sheets("critères").Range("E1:E2"), CopyToRange:=Range( _
            "Résultats!Extract"), Unique:=False
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  14. #14
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    Grand merci boisgontierjacques.

    J'effectue des test tout de suite.

  15. #15
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    J'ai testé.

    Quand on rajoute les critères raison médicale et État d'accomp., le filtre ne donne pas le bon résultat.

    Sinon le reste fonctionne bien!

  16. #16
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Il me semble que cette version fonctionne

    Boisgontier
    Fichiers attachés Fichiers attachés

  17. #17
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    Merci encore boisgontierjacques. Ça marche.

    Dernière et dernière chose pour cette discussion. Dans ton filtre, s'il n'y a pas de date, cela ne fonctionne pas.

    Y a t-il un moyen de filtrer par les autres critères même si on n'a pas mis de dates comme critère?


    MERCI!

  18. #18
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,


    On peut ne pas avoir de dates:
    -ou les 2 dates sont documentées
    -ou aucune date

    Critère en C2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    =ET(SI($C$5="";VRAI;$C$5=DEMANDES!G2);
    SI($C$7="";VRAI;$C$7=DEMANDES!I2);
    SI($C$9="";VRAI;$C$9=DEMANDES!W2);
    SI($C$11="";VRAI;$C$11=DEMANDES!J2);
    SI($C$13="";OU(DEMANDES!N2<>"";ESTVIDE(DEMANDES!N2));DEMANDES!N2=$C$13);
    SI($C$15="";OU(DEMANDES!P2<>"";ESTVIDE(DEMANDES!P2));DEMANDES!P2=$C$15);
    OU(SI(ET($C$17<>"";$C$19<>"");ET(DEMANDES!K2>=$C$17;DEMANDES!K2<=$C$19);VRAI)))
    Macro d'extraction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Extrait2()
        Sheets("DEMANDES").Range("A1:AM10000").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Sheets("critères").Range("E1:E2"), CopyToRange:=Range( _
            "Résultats!Extract"), Unique:=False
    End Sub
    On peut imaginer que l'une des 2 dates soit documentée. Faire une recherche Google (excel vba filtre élaboré)

    Boisgontier
    Fichiers attachés Fichiers attachés

  19. #19
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    Sur un exemple simple, pour obtenir la liste dans un intervalle,comment saisir en C1 et C2:
    -Les 2 dates
    -ou Date début
    -ou Date fin
    -ou Pas de dates (tout)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =SI(ET($C$1<>"";$C$2<>"");ET(BD!K2>=$C$1;BD!K2<=$C$2);
    SI(ET($C$1<>"";$C$2="");BD!K2>=$C$1;
    SI(ET($C$1="";$C$2<>"");BD!K2<=$C$2;VRAI)))


    Boisgontier
    Fichiers attachés Fichiers attachés

  20. #20
    Membre du Club
    Homme Profil pro
    Économiste
    Inscrit en
    Janvier 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Économiste

    Informations forums :
    Inscription : Janvier 2016
    Messages : 114
    Points : 44
    Points
    44
    Par défaut merci
    GRAND MERCI boisgontierjacques.


    J'ai beaucoup appris.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème macro filtre avancé périodes
    Par arochab dans le forum Excel
    Réponses: 2
    Dernier message: 31/05/2017, 13h55
  2. Macro Filtre avancé qui ne filtre rien
    Par Stanler dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/12/2015, 15h26
  3. Macro filtre avancé
    Par AMEDDO79 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2014, 14h29
  4. [XL-2007] Problème avec macro filtre avancé
    Par leronce dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/09/2013, 22h04
  5. [XL-2010] Macro filtre avancé = KO !
    Par toto92 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2013, 19h39

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