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 avec SpecialCells(xlCellTypeVisible).Cells.Count [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 115
    Par défaut Problème avec SpecialCells(xlCellTypeVisible).Cells.Count
    Bonjour à tous,

    J'ai fait une macro qui filtre des données avec le filtre avancé selon un range donné, et ce, pour permettre à l'utilisateur de voir les données concernées en même temps je compte le nombre de ligne non-vides pour donner le nombre à l'usager.
    Le tout fonctionne très bien, mais la valeur minimum qui me retourne c'est 1, donc même s'il n'existe aucune ligne non-vide à part ma ligne de titre de colonne, il me donne 1 au lieu de 0.
    J'ai pensé alors de juste soustraire un 1, puisque il s'agirait peut-être de la ligne1 qui contient le titre de colonne, mais ce n'est pas le cas.
    J'ai alors pensé à une deuxième solution de conditionner, donc si le chiffre qu'il me retourne c'est 1, il donne 0 à l'usager sinon il donne le chiffre qu'il compte. Cette astuce fonctionne très bien avec tous les chiffres >=1
    Mai je me suis rendu compte que, quand il existe une ligne non-vide réellement (à part la ligne 1) il me retourne 0, ce qui évidement faux!

    auriez-vous une idée d'où provient cette erreur? Voici mon code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sheets("Feuil1").Range("A1:BO65536").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range(.Cells(1, 2), .Cells(4, 6)), Unique:=False
     
     
     
    Nombre = Sheets("Feuil1").Range("A2", Sheets("Feuil1").Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells.Count
        If Nombre <= 1 Then
            UserForm1.Label1.Caption = 0
        Else:
            UserForm1.Label1.Caption = Nombre
        End If

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu as écrit une procédure utilisant le filtre avancé et que tu veux compter le nombre de données filtrées, utilise plutôt une des fonctions de la catégorie Base de données comme BDNBVAL ou BDNB qui utilisent les mêmes paramètres Zone des données et zone des critères.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 115
    Par défaut
    Y a-t-il un équivalent de cette fonction en vba?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Oui, avec la méthode Application.WorksheetFunction.DCountA
    Petit exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Sub Filtre()
     Dim rng As Range, criteria As Range
     Set rng = db.Range("A1").CurrentRegion: Set criteria = param.Range("C1:D2")
     MsgBox "Nombre de données filtrées " & AdvancedFilter(rng, criteria)
    End Sub
    Function AdvancedFilter(dBase As Range, dCriteria As Range) As Long
     dBase.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=dCriteria
     AdvancedFilter = Application.WorksheetFunction.DCountA(dBase, 1, dCriteria)
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 115
    Par défaut
    Merci! ça marche!

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

Discussions similaires

  1. Petit problème avec Range et Cells
    Par fdegrave dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2013, 18h08
  2. Problème avec la fonction Cells.Find
    Par petole dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/01/2012, 16h29
  3. VBA Problème avec .SpecialCells(xlCellTypeLastCell)
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2010, 21h32
  4. Problème avec COUNT
    Par LhIaScZkTer dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/01/2006, 02h16
  5. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 15h49

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