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 :

VBA : ne pas compter les cellules vides


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Par défaut VBA : ne pas compter les cellules vides
    Bonjour à toutes et à tous,

    Je voulais, sur les conseils du forum, utiliser sous.total pour compter dans un tableau filtré mais il y a une condition. Malgré la patience et les conseils de différentes personnes, je ne suis pas arrivé au résultat voulu.

    J'ai donc trouvé sur le net cette formule qui fonctionne bien excepté qu'elle prend en compte les cellules vides et je voudrais qu'elle ne compte pas les cellules vides.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function CompterPositifs(Plage As Range)
        Dim C As Range
        Application.Volatile
        For Each C In Plage
            If C.EntireRow.Hidden = False And C.Value > 0 Then
                CompterPositifs = CompterPositifs + 1
            End If
        Next C
    End Function
    Comment puis je faire pour que les cellules vides ne soient pas comptées ?

    Merci pour vos avis et aides.

    Bon week end

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    J'ai fais des essais et pour moi le résultat est conforme; les cellules vides ne sont pas comptabilisées.

    Après il peut y avoir un hic si la zone sélectionnée contient des fonctions SI qui demandent de ne rien faire sous la forme de
    Dans ce cas, il faut modifier ton code de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function CompterPositifs(Plage As Range)
        Dim C As Range
        Application.Volatile
        For Each C In Plage
            If C.EntireRow.Hidden = False And C.Value <> "" Then
                CompterPositifs = CompterPositifs + 1
            End If
        Next C
    End Function
    on ne vérifies pas que le contenu de la cellule et supérieur à 0 mais qu'il est vide.

    En espérant que j'ai pas tout faux.

    GG

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Par défaut
    Bonjour Jerome,

    Je te remercie pour cette réponse dominicale.


    Effectivement la colonne a le calcul suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(ESTVIDE(T16);"";+[@[Exit_value]]-[@[Entry_value]])
    Ton code fonctionne parfaitement.
    Il compte bien toutes les cellules qui ne sont pas vides. Très bien mais .....

    - Je voudrais qu'il me compte les cellules qui sont positives

    J'ai donc ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function CompterPositifs(Plage As Range)
        Dim C As Range
        Application.Volatile
        For Each C In Plage
            If C.EntireRow.Hidden = False And C.Value > 0 Then
                CompterPositifs = CompterPositifs + 1
            End If
        Next C
    End Function
    Et pour les cellules négatives, j'ai celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function CompterNegatifs(Plage As Range)
        Dim C As Range
        Application.Volatile
        For Each C In Plage
            If C.EntireRow.Hidden = False And C.Value < 0 Then
                CompterNegatifs = CompterNegatifs + 1
            End If
        Next C
    End Function
    Le problème est que dans la colonne, il peut y avoir des cellules vides qui sont calculées comme positives.

    Merci d'avance pour ton aide.

    Bon dimanche

  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 171
    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 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le problème est que dans la colonne, il peut y avoir des cellules vides qui sont calculées comme positives.
    C'est très curieux ce que tu annonces car une cellule vide d'excel vaut 0 donc si l'on teste ce qui est supérieur à 0 (>0) on calculera bien les positifs
    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 éclairé
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Par défaut
    Bonjour Philippe,

    J'ai également essayé en modifiant ma formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(ESTVIDE(T16);"OUVERT";+[@[Exit_value]]-[@[Entry_value]])
    J'ai donc un OUVERT à la place de la cellule vide et c'est quand même "comptabilisé" comme positif.
    La colonne est en format Nombre.

    Je ne comprends pas du tout.

    Merci

  6. #6
    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 171
    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 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La fonction ESTVIDE, renvoie FAUX si la cellule que tu testes contient une fonction qui renvoie une chaîne vide.
    Utilise plutôt NB.VIDE qui dénombre le nombre de cellules vides en ce compris celles qui contiennent une fonction qui renvoie une chaîne vide
    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

Discussions similaires

  1. [XL-2007] Ne pas importer les cellules vides
    Par neomorpheus35 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/06/2017, 00h09
  2. [XL-2013] Compter les cellules vides d'un tableau
    Par Waragnac dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 24/12/2016, 12h04
  3. Calcul : ne pas compter les cellulles vides
    Par romuald.lecordier dans le forum QlikView
    Réponses: 1
    Dernier message: 05/09/2014, 08h49
  4. Réponses: 10
    Dernier message: 16/12/2011, 18h18
  5. [EXCEL][VBA] Compter les cellules non-vides
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2006, 15h40

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