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é sur une autre feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 36
    Par défaut Filtre avancé sur une autre feuille
    J'ai sur ma feuille 1 un tableau contenant plusieurs colonnes. Je voudrais filtrer la colonne A sur une colonne critère que j'aurai dans ma feuille 2 et ensuite supprimer ce que mon filtre affichera.

    Exemple :

    Colonne 1 (Source) Colonne 1 (Filtre) Colonne 1 (Source) Final
    Eric Eric Philippe
    Philippe + => Karen
    Karen

    Pour l'instant j'ai fais ceci mais ça me renvoie pas la bonne filtration déjà.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Filtre()
    Dim MaPlage As Range
    Dim DernLigne As Long
     
    DernLigne = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
     
    Set MaPlage = Range(Cells(1, 1), Cells(DernLigne, 1))
     
        Range("A:A").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            MaPlage, Unique:=False
     
     
    End Sub

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 36
    Par défaut
    En fait c'est bon, le problème c'est que ma plage je la définissais dans la feuille du tableau à filtrer. Je l'ai changé en ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Filtre_ASPI()
    Dim MaPlage As Range
    Dim DernLigne As Long
    ScreenUpdating = False
    DernLigne = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
    Sheets("Feuil2").Activate
    Set MaPlage = Range(Cells(1, 1), Cells(DernLigne, 1))
    Sheets("Feuil1").Activate
        Range("A:A").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            MaPlage, Unique:=False
    ScreenUpdating = True
     
    End Sub
    Dites moi si c'est améliorable svp et comment pourrai je supprimer ce qui est affiché pour revenir sur un tableau source sans ce que mon filtre m'a donné.

    Merci d'avabce

  3. #3
    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 et bienvenu sur ce Forum,

    En termes d'amélioration.
    - Affecter Long à la variable DernLigne me paraît exagéré.
    - Eviter les méthodes Activate, Select.. qui ne contribuent qu'à rendre le code moins lisible.
    - Pour cette lisibilité, utiliser, tant faire se peut, le bloc With et ratacher le objets .Cells et non Cells.
    - En fin de procédure, libérer les variables affectées à des objets.

    revenir sur un tableau source sans ce que mon filtre m'a donné.
    Utiliser la méthode ShowAlldata comme ci-dessous dans le code proposé

    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
    Sub Filtre_ASPI()
     
    Dim MaPlage As Range
    Dim DernLigne As Integer
     
    Application.ScreenUpdating = False
     
    With Worksheets("Feuil2")
            DernLigne = .Range("A" & .Rows.Count).End(xlUp).Row
            Set MaPlage = .Range("A1:A" & DernLigne)
    End With
     
    With Worksheets("Feuil1")
            If .FilterMode = True Then .ShowAllData
            DernLigne = .Range("A" & .Rows.Count).End(xlUp).Row
            .Range("A1:A" & DernLigne).AdvancedFilter _
                                            Action:=xlFilterInPlace, _
                                            CriteriaRange:=MaPlage, _
                                            Unique:=False
    End With
     
    Set MaPlage = Nothing
     
    Application.ScreenUpdating = True
     
    End Sub

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    - Affecter Long à la variable DernLigne me paraît exagéré.
    Bonjour,

    je ne suis pas du tout d'accord, il se passe quoi avec ton Integer si sa dernière ligne est 75478 et ?

    TOUJOURS utiliser un Long pour les numéros de lignes, c'est pas un Long qui va faire chauffer l'ordinateur

    Pour le reste, j'appuie tes propos

  5. #5
    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 Joe,

    J'ai bien pris cette précaution de langage
    me paraît
    .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TOUJOURS utiliser un Long pour les numéros de lignes
    Je suis sceptique.
    Une feuille dont le UsedRange contient plus de 32767 lignes ne doit pas être facile à gérer.
    De telles feuilles ne doivent pas courir les rues.

    Cela dit, j'en conviens, c'est du perfectionnisme de ma part.

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 581
    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 581
    Par défaut
    Bonjour

    Même si 1 million de lignes est rarement utilisé et gérable, 32767 lignes en revanche ce n'est pas si énorme... tout dépend l'usage

Discussions similaires

  1. [Toutes versions] Copier les lignes filtrées sur une autre feuille
    Par lemarcain dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/03/2018, 16h29
  2. [XL-2007] Liste déroulante d'une colonne filtrée sur une autre feuille
    Par Blacktizen dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/08/2016, 09h38
  3. copie du résultat d'un filtre sur une autre feuille
    Par totogabi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2015, 17h39
  4. copie d'une selection filtrée sur une autre feuille
    Par biboulou dans le forum Excel
    Réponses: 2
    Dernier message: 15/08/2011, 16h44
  5. Afficher nombre de lignes d'une table située sur une autre feuille
    Par nemone dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 08/12/2006, 17h28

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