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 :

Tester si le resultat d'un filtre automatique est vide [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut Tester si le resultat d'un filtre automatique est vide
    Bonjour,
    Ce pb a déjà été traité et même résolu, mais "ça" ne foncitonne pas pour moi.
    http://www.developpez.net/forums/d71...omatique-vide/
    J'ai inséré un tableau appelé DonnGrc, dans lequel j'ai appliqué un filtre pour repérer les "Non trouvés". s'il n'y en a pas je veux sortir de la procédure.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.ListObjects("DonnGrc").Range.AutoFilter Field:=1, Criteria1:= _
            "=*Trouvé*", Operator:=xlAnd
    NbNt = ActiveSheet.ListObjects("DonnGrc").AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows.Count
    or Debug.Print NbNt répond 1 alors que j'ai 18 non trouvés.
    Est-ce quelqu'un peut m'aider svp.
    Merci.

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    et si tu essayes comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim NbNt As Integer
    ActiveSheet.Range("DonnGrc").AutoFilter Field:=1, Criteria1:= _
            "=*Trouvé*", Operator:=xlAnd
    NbNt = ActiveSheet.Range("DonnGrc").SpecialCells(xlCellTypeVisible).Rows.Count
    MsgBox NbNt

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour,
    commence par trouver un exemple qui ne retourne rien!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim r As Range
    Set r = ActiveSheet.UsedRange
    For I = 2 To r.Rows.Count
    If r(I, 1).EntireRow.Hidden Then MsgBox "Pas Visible"
    Next

  4. #4
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Dominique,
    Ta solution ne change rien, j'ai toujours 1 au lieu de 18.
    Je vais essayé la solution de rdurupt

  5. #5
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Robert,
    Ta solution passe en revue toutes les lignes de la feuille non triées (j'ai reçu plus de 18 messages "Pas visibles".
    j'ai également testé avec un filtre vide, mais c'est pareil, je boucle.
    Merci de votre aide

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui elle passe en revue toutes les ligne.
    dans mon exemple je test le ligne masquées.
    Code là 18 normalement! : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
     
    Dim Nb As Long
    Dim r As Range
    Set r = ActiveSheet.UsedRange
    Nb = 0
    For I = 2 To r.Rows.Count
    If r(I, 1).EntireRow.Hidden = False Then Nb = Nb + 1
    Next
    Debug.Print Nb
    End Sub
    Dernière modification par AlainTech ; 20/04/2014 à 12h44. Motif: Suppression de la citation inutile

  7. #7
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Robert,
    effectivement, cela fonctionne (même quand le filtre renvoie aucune donnée), mais j'ai des fichiers très gros, et ta solution liste toutes les lignes du tableau avant le filtre ; j'aurai préféré (si possible ;>) quelque chose qui compte que les lignes filtrées.

  8. #8
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Perso, tu m'étonnes car j'ai testé ce que je t'ai proposé, au hasard, es-tu sur que le filtre est sur le mot "trouvé" et non "trouve" ?

  9. #9
    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
    l'erreur initiale vient du faite que Plage.Rows.count donne si Plage est une plage discontinue seulement le nombre de lignes de de la première zone.

    testez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test2()
    Dim Plage As Range
     
    Set Plage = Union(Range("A1:A2"), Range("A12:X16126"))
     
    MsgBox Plage.Rows.Count
    End Sub
    2!! comme résultat

    Pour la question initiale, faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim NbNt As Long
     
    With ActiveSheet.ListObjects("DonnGrc")
        .Range.AutoFilter Field:=1, Criteria1:="=*Trouvé*"
        NbNt = .Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 'pour ne pas compter la ligne des titres
        MsgBox NbNt
    End With
    End Sub

  10. #10
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Oui, j'ai 18 "non trouvé" et 0 "zz", j'ai testé avec Criteria1:= "=*Trouvé*" et Criteria1:= "=*zz*"
    Quand je fais le pas à pas, il passe de If r(i, 1).EntireRow.Hidden = False Then
    à
    next, sans passé par NB le nombre de fois que j'ai de ligne dans mon fichier initiale

  11. #11
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour mercatog,
    c'est exactement ce que je voulais faire...
    Merci beaucoup à vous trois.
    Bonne soirée

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

Discussions similaires

  1. [XL-2010] Tester si le resultat d'un filtre est vide
    Par cag's dans le forum Excel
    Réponses: 6
    Dernier message: 15/06/2015, 16h19
  2. Réponses: 2
    Dernier message: 20/01/2015, 09h18
  3. Resultats de mon Filtre Automatique
    Par bibi28 dans le forum Excel
    Réponses: 2
    Dernier message: 30/10/2013, 20h13
  4. [2003] Tester si le resultat d'un filtre automatique est vide
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/03/2009, 13h38
  5. [VBA-E]Détecter si un filtre automatique est présent
    Par illight dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/03/2007, 16h11

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