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 :

problème de filtre avancé


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
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut problème de filtre avancé
    Bonjour à tous,

    j'ai besoin de votre aide pour l'élaboration d'un filtre avancé que j'utilise pour la première fois, mais j'ai eu un problème par rapport au filtre des données, en effet le fonction ne fait que copie et coller les données dans la feuille P12 sans prendre en considération le critère de choisir que les données qui se trouve dans la colonne E de la feuille "ent".

    Je vous remercie par avance pour votre aide.

    Orda



    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
    Sub Macro1()
     
     
    Dim ent, P1, P2, P12 As Worksheet
     
    'Dim i, j As Integer
     
     
    Set P12 = Worksheets(5)
    Set P1 = Worksheets(3)
    Set P2 = Worksheets(4)
    Set ent = Worksheets(1)
     
    P12.Range("A1").CurrentRegion.Offset(1, 0).Rows.Delete 'supprime toutes lignes éditées de l'onglet P12
     
        P1.Range("A1:J" & Rows.Count).AdvancedFilter _
             Action:=xlFilterCopy, _
             CriteriaRange:=ent.Range("E1:E" & Rows.Count), _
             CopyToRange:=P12.Range("A1:J1"), _
             Unique:=False
     
        P2.Range("A1:J" & Rows.Count).AdvancedFilter _
             Action:=xlFilterCopy, _
             CriteriaRange:=ent.Range("F1:F" & Rows.Count), _
             CopyToRange:=P12.Range("A" & Rows.Count).End(xlUp)(2), _
             Unique:=False
     
     
    End Sub

  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,

    Remarque préliminaire.
    En fin de procédure, il est opportun de libérer toutes les variables affectées à des objets.
    La zone de critères ne doit contenir qu'un nombre limités de lignes!

    Le tutoriel de référence à ce sujet

    Filtres avancé par Philippe Tulliez

  3. #3
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut
    Je vous remercie Marcel pour votre réponse rapide.

    le nombre de ligne de la zone de critère contient un tableau variable.

    Avez-vous une idée comment procéder dans ce type de cas ?

    Cordialement
    Orda

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour ORDA, la forum
    pour filtrer à plusieurs caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
        Set feuille = Worksheets("feuil1")
        With feuille.Range("A2", feuille.Cells(Rows.Count, 1).End(xlUp))
            .AutoFilter Field:=1, Criteria1:="=lot*", Operator:=xlOr, Criteria2:="=*table*"
            Set mescellules = .SpecialCells(xlVisible)
        End With
        MsgBox mescellules.Address
    End Sub
    et pour ton problème merci d'expliquer ce que tu cherches à faire et si nécessaire un exemple peut être on peut t'aider

  5. #5
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut
    Je vous remercie pour vos réponses,

    Marcel, oui j’ai appris a utilisé le filtre avancé grâce à ce tutoriel, je vais tester cet aprém de moduler l'argument critère d'aprés tes explications .

    Bennacer, je suis désolée j’ai pensé que l’idée était claire, (je pense que c’était claire que pour moi ) je ferai plus d’effort pour l’explication la prochaine fois 😊

    Mille Mercis

    Orda

  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
    Bonjour Orda,

    Dans ton code, tu considérais l'intégralité de la colonne E comme critères.

    le nombre de ligne de la zone de critère contient un tableau variable.
    As-tu consulté le tutoriel que je t'ai mentionné?

    Si la zone de critères est variable (exemple de 2 à 3 lignes), alors tu peux moduler l'argument critère de la méthode de filtre avancé.
    Par exemple, en affectant un nom à ta zone de critères.
    Celui-ci, redéfini à chaque cas, serait utilisé dans l'argument critère.

    Autre méthode : affecter une variable à la zone de critères. La redéfinir en fonction des cas.
    Pour cette option.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim lignecrit as Byte
    Dim plagecrit as Range
     
    With Worksheets(1)
    lignecrit = .cells(4, 2).End(xlUp).Row
    Set   plagecrit = .Range('A1:D" & lignecrit)
    ......
     CriteriaRange:=plagecrit

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. [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
  3. [XL-2007] Problème filtre avancé
    Par trane51 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/06/2011, 17h19
  4. Réponses: 3
    Dernier message: 01/02/2010, 12h12
  5. Problème de selection sur un filtre avancé
    Par Thomas S dans le forum Excel
    Réponses: 2
    Dernier message: 22/08/2008, 11h38

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