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 VBA - Décocher un champ d'un filtre [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Par défaut Macro VBA - Décocher un champ d'un filtre
    Bien le bonjour.

    Avant tout meilleurs Voeux.

    Ensuite, je suis nouveau sur le forum et dans le VBA ou même tout simplement dans le développement.

    Je travaille actuellement sur une macro qui contient des filtres.
    Dans cette macro j'aimerai pouvoir "désélectionner" ou "décocher" des champs pour ensuite pouvoir supprimer les lignes des champs étant restés sélectionnés. J'ai cherché partout, mais a chaque fois je ne tombe que que sur les codes pour "sélectionner" des champs et non l'inverse.

    Posons l'exemple : Colonne 5 (soit E) je peux trier selon 6 critères qu'on appellera Champ1, Champ2, Champ3, Champ4, Champ5 et Champ6. Je veux supprimer les lignes de Champ1, Champ2 et Champ3 (/!\ Là où je veux décocher et donc raisonner par l'inverse c'est que les champs déselectionnés auront toujours le même nom, mais ceux que je veux supprimer pourront être plus nombreux ou avoir des noms différents selons les extractions excel que j'utilise). Ou dans le sens inverse, je ne veux garder que les lignes de Champ4, Champ5, Champ6.

    Quand j'ai enregistré ma Macro j'ai eu ce type de code ou dans ce genre là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ActiveSheet.Range("$A$1:$AJ$19608").AutoFilter Field:=5, Criteria1:=Array( _
            "Champ1", "Champ2", "Champ3"), Operator:=xlFilterValues
        Rows("174:174").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Delete Shift:=xlUp
        ActiveSheet.Range("$A$1:$AJ$19601").AutoFilter Field:=5
        Range("A1").Select
    J'ai pu le modifier pour donner ca, mais ca ne donne toujours pas le résultat que je souhaite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    If Not AutoFilterMode Then Range("A1").AutoFilter
         ActiveSheet.Range("$A$1:$AI$502").AutoFilter Field:=5, Criteria1:= _
            "=Champ1", Operator:=xlOr, Criteria2:= _
            "=Champ2"
    '    Supprimer les lignes des filtres sélectionnés
    ActiveSheet.UsedRange.Rows("2:" & ActiveSheet.UsedRange.Rows.Count).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Delete Shift:=xlUp
    ' Désactivation des filtres
    If FilterMode = True Then ActiveSheet.ShowAllData
    '    Désélectionner les filtres
    ActiveSheet.UsedRange.Select
    Mon problème réside donc toujours dans le fait ou j'aimerai décocher Champs4, Champs5 et Champ6 pour pouvoir supprimer les lignes de Champs1, Champs2 et Champs3.


    J'espère avoir réussi a faire comprendre mon souci.

    En vous remerciant.
    Cordialement





    #JeSuisCharlie

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    En activant le Générateur de macros puis en effectuant manuellement les diverses manipulations,
    une base de code est livrée sur un plateau !

    __________________________________________________________________________________________________



  3. #3
    Membre régulier Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Par défaut
    Merci de votre réponse rapide.

    Vous voulez dire en enregistrant les manipulations que je fais ?
    Si c'est le cas, c'est ce que j'ai fait et refait a plusieurs reprises.
    Le fait de décocher les champs a garder, de valider et couper l'enregistrement, cela donne dans mon code non pas un décochement des parties que je souhaite, mais l'inverse soit une sélection des champs que je veux supprimer. Dans ce cas ok, mais comme je dois travailler sur des fichiers différents les champs sélectionnés peuvent être de noms différents ou de nombres différents.

    J'aimerai donc que le code intègre la déselection d'un item plutot que la sélection d'un item. Et je ne sais pas si cela est possible en VBA.

    Si vous pouviez me donner des avis. J'en ai besoin dans le cadre de mon travail.
    Merci

    #JeSuisCharlie

  4. #4
    Membre régulier Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Par défaut
    J'ai pu trouver le terme "array" dans le code que j'avais enregistré. Il sélectionne un ensemble de champs dans un filtre.

    Quel est l'inverse de "Array" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveSheet.Range("$A$1:$AJ$19608").AutoFilter Field:=5, Criteria1:=Array( _
            "Champ1", "Champ2", "Champ3"), Operator:=xlFilterValues
    Merci

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

Discussions similaires

  1. VBA Cocher décocher des champs de filtre dans un TCD
    Par ancel17 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/02/2018, 15h48
  2. [Toutes versions] VBA Cocher décocher des champs de filtre dans un TCD
    Par Frululu dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/01/2014, 16h29
  3. [XL-2007] Macro VBA ajout un champ dans base de donnée
    Par Sangoku76 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/10/2012, 09h35
  4. Réponses: 4
    Dernier message: 19/03/2009, 09h57
  5. VBA Récupérer nombre champ table filtré
    Par ARTAMYS dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/08/2008, 21h20

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