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 - Comptage sur 2 critères [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Par défaut VBA - Comptage sur 2 critères
    Bonjour à tous,

    Je souhaite faire un petit bout de code tout bête à première vue mais impossible de faire un truc qui marche.

    Je souhaite compter le nombre de ligne ou sont présentes 2 valeurs.
    Je veux éviter de passer par un code qui balaie toute la plage de données et avais donc pensé aux solutions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb = WorksheetFunction.SumProduct((Worksheets("MODELE").Columns("B:B") = Valeur1) * (Worksheets("MODELE").Columns("J:J") = "Forbidden"))
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb = Evaluate((WorksheetFunction.CountIf(Worksheets("MODELE").Columns("B:B"), Valeur1)) * worksheetFunction.CountIf(Worksheets("MODELE").Columns("J:J"), "Forbidden")))
    La première ne fonctionne pas et me donne une erreur type mismatch
    La seconde n'est pas en erreur mais me remonte le nombre de ligne où sont presentes chaque critère et pas uniquement le comptage des lignes où sont présents les 2 critères en parallèle ...

    Ca ne m'a pas l'air impossible, enfin j'espère pour Excel, mais je n'arrive pas à trouver de solutions.

    Merci d'avance pour votre aide,

    Julien

  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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pas besoin de VBA pour cela, la formule SOMMEPROD peut le résoudre. Si tu veux vraiment le faire avec VBA, tu utilises la même formule avec Evaluate
    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 averti
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Par défaut
    Bonjour,

    Merci pour ton retour,

    Il me faut absolument du VBA.

    J'essaye ca mais j'ai un message d'erreur subscript out of range

    Nb = Evaluate(WorksheetFunction.SumProduct(Worksheets("MODELE").Range("B1:B1000"), Valeur1 * Worksheets("MODELE").Range("J1:J1000"), "Forbidden"))

  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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tu mélanges deux syntaxes qui n'ont rien à voir l'une avec l'autre
    EVALUATE s'utilise avec une chaîne de caractères contenant la formule Excel telle qu'elle est écrite dans Excel mais traduite en anglais alors que WorksheetFunction renvoie une valeur calculée par une méthode choisie. Méthode qui est une formule d'excel dont il n'y a aucune équivalence dans les fonctions VBA comme par exemple Left (Gauche)
    Exemple pour la somme de la plage A2:A6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print Evaluate("=SUM(A2:A6)")
    Debug.Print Application.WorksheetFunction.Sum(Range("A2:A6"))
    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 averti
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Par défaut
    D'accord pour la structure du Evaluate.

    J'ai tenté ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb = Evaluate("COUNTIFS(E:E;" & Valeur & ";J:J;""Forbidden"")")
    Mais la valeur renseignée dans Nb est Error 2015

    EDIT : Pb résolu, en remplacant les ; par , les valeurs remontées sont correctes.

    Merci pour ton aide.

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

Discussions similaires

  1. [XL-2007] Formulaire VBA Excel - recherche sur plusieurs critères et affichage des résultats
    Par kl1ft dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/08/2016, 20h44
  2. XSL comptage sur deux critères
    Par ferdhy dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 24/06/2010, 15h09
  3. [VBA Excel] Filtre sur plusieurs critères
    Par tazmania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/12/2006, 11h12
  4. [VBA-E]filtre sur plusieurs Critères avec Excel
    Par Diablo_22 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2006, 20h34
  5. PBL de recherche basé sur 2 critères en Vba
    Par Minet dans le forum Access
    Réponses: 2
    Dernier message: 14/02/2006, 21h26

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