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 automatique avec VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut Filtre automatique avec VBA
    Bonjour,

    Je dois faire des filtres sur une feuille de mon classeur, le problème c'est que les colonnes peuvent changer d'un moment à l'autre, je voudrais faire en sorte que le programme recherche la bonne colonne avant de faire le filtre selon le nom de la colonne qui se trouve toujours en première ligne, par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Nbc = Range("A1").CurrentRegion.Columns.Count
     
    Dim i As Integer
     
    For i = 1 To Nbc
     
        If Cells(1, i).Value = "Das" Then ActiveSheet.Columns(i).AutoFilter _
        Field:=7, Criteria1:="SANTE"
     
        If Cells(1, i).Value = "Date_1ereTarification" Then ActiveSheet.Columns(i).AutoFilter Field:=8, Operator:= _
            xlFilterValues, Criteria2:=Array(0, "7/16/2015")
     
    Next i
    Je pense que le pose problème car je vois que le filtre automatique est généralement utilisé avec des .

    Merci d'avance pour votre aide

  2. #2
    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
    Bonjour,

    un exemple pour comprendre
    je pars du principe que ta première colonne remplie est 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 Test()
    Dim Recherche As String
     
    ' En-tête de colonne recherché
    Recherche = "TOTO"
     
    ' on cherche l'en-tête dans la ligne 1
    Set c = Rows(1).Find(Recherche, , xlValues, xlWhole)
     
    ' si on l'a trouvé  :    filtre automatique sur cette colonne avec "SANTE" en contenu
    If Not c Is Nothing Then Range("A1").AutoFilter c.Column, "SANTE"
     
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Merci pour votre réponse, cela fonctionne parfaitement. En revanche, j'ai un problème lorsque le critère est de type date :

    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 Nbc
     
     
            Set d = Rows(i).Find("Date_1ereTarification", , xlValues, xlWhole)
             If Not d Is Nothing Then Range("A1").AutoFilter d.Column, Operator:= _
            xlFilterValues, Criteria2:=Array(0, "7/16/2015")
     
            Set e = Rows(i).Find("Date_DemandeSouscription", , xlValues, xlWhole)
             If Not d Is Nothing Then Range("A1").AutoFilter e.Column, Operator:= _
            xlFilterValues, Criteria2:=Array(0, "7/16/2015")
     
     Next i
    J'ai essayé de faire avec l'enregistreur de macros, et il prend comme critère la dernière date en cours, je voudrais avoir comme critère la dernière date en automatique, cela est il possible ?

    Je n'arrive pas à utiliser la fonction Date, quand je fais ça par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           Set e = Rows(i).Find("Date_DemandeSouscription", , xlValues, xlWhole)
             If Not d Is Nothing Then Range("A1").AutoFilter e.Column, Operator:= _
            xlFilterValues, Criteria2:=Array(0, "Date")
    cela ne fonctionne pas.

    Cordialement

  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
    Sans me pencher plus en avant sur ton problème, je note que tu find avec une variable e, et qu'ensuite tu testes l'existence de l'objet d, c'est normal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set e = Rows(i).Find("Date_DemandeSouscription", , xlValues, xlWhole)
    If Not d Is Nothing Then Range("A1").AutoFilter e.Column, Operator:= _
            xlFilterValues, Criteria2:=Array(0, "Date")
    ensuite, tu veux filtrer quoi exactement en terme de date ? Uniquement la date du jour ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Merci pour votre réponse, je l'avais corrigé dans mon programme, j'avais oublié de faire la correction ici :


    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
    Nbl = Range("A1").CurrentRegion.Rows.Count
    Nbc = Range("A1").CurrentRegion.Columns.Count
     
        For i = 1 To Nbc
     
           Set c = Rows(i).Find("Das", , xlValues, xlWhole)
            ' si on l'a trouvé  :    filtre automatique sur cette colonne avec "SANTE" en contenu
    '
             If Not c Is Nothing Then Range("A1").AutoFilter c.Column, "SANTE"
     
            Set d = Rows(i).Find("Date_1ereTarification", , xlValues, xlWhole)
             If Not d Is Nothing Then Range("A1").AutoFilter d.Column, Operator:= _
            xlFilterValues, Criteria2:=Array(0, "7/16/2015")
     
            Set e = Rows(i).Find("Date_DemandeSouscription", , xlValues, xlWhole)
             If Not e Is Nothing Then Range("A1").AutoFilter e.Column, Operator:= _
            xlFilterValues, Criteria2:=Array(0, "7/16/2015")
     
    Next i
    Oui je désire filtrer la date du jour, mon but étant de permettre à la macro de filtrer la colonne correspondante sur l'année 2016 si l'année en cours est 2016.

    Voyez-vous ?

  6. #6
    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
    non je ne vois pas :hum:

    tu veux la date du jour ou pas ?
    là tu parles de 2016 si on est en 2016 ... et on fait quoi tant qu'on est en 2015 ? et quand on sera en 2017 ?

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

Discussions similaires

  1. [XL-2000] Filtre automatique avec plus de deux critères
    Par Shikam dans le forum Excel
    Réponses: 4
    Dernier message: 07/05/2010, 11h16
  2. [Toutes versions] Filtre automatique avec vba
    Par sabzzz dans le forum Contribuez
    Réponses: 0
    Dernier message: 13/04/2010, 21h17
  3. [XL-2003] somme apres selection d'un filtre automatique avec un critere.
    Par mimilll dans le forum Excel
    Réponses: 5
    Dernier message: 15/06/2009, 22h25
  4. Edition planning automatique avec VBA
    Par Grobibi34 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/03/2008, 12h09
  5. Filtre automatique en VBA
    Par kikou44 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/07/2006, 21h24

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