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

Excel Discussion :

Calculer le nombre de cellules qui répondent à deux conditions


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut Calculer le nombre de cellules qui répondent à deux conditions
    Bonjour je cherche le moyen de calculer dans mon tableau le nombre de cellules qui correspondent à deux critères...
    j'ai mis un ficher pour tenter d'être plus clair....
    j'ai fait des essais en vain avec SOMMEPROD

    si quelqu'un peut m'aider merci par avance......

    recherche et calcul.xlsx

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Ton tableau n'est pas construit de manière à ce que tu puisses réaliser cela facilement. Normalement, une recherche de ce genre est effectuée sur une "table" (une colonne pour les noms, une colonne à côté pour les activités).

    Néanmoins, dans le cas de figure que tu proposes, tu peux utiliser ceci:
    =SOMMEPROD((NON(ESTNA(EQUIV(B4:R4;groupe1;0))))*(B5:R5="saut"))+SOMMEPROD((NON(ESTNA(EQUIV(B7:R7;groupe1;0))))*(B8:R8="saut"))

    Tu perçois bien ici les limites de la disposition de tes données, je suppose.

    Attention qu'en plus, tu as des espaces qui trainent après certains noms de personnes ou d'activités (saut, notamment!)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    merci beaucoup pour ta réponse... effectivement je vois la limite... d'autant que j'ai 120 lignes comme celle-la.....

    j'ai déja essayé de comprendre et appliquer ta formule mais cela donne pas le résultat attendu....

    pour la disposition de mes données je suis un peu coincé car je ne peux pas vraiment y toucher... question d'affichage et d'utilisation...
    je pourrais créer une sorte de feuille miroir avec des correspondances pour redisposer mes cellules.. masis ça semble un peu compliquer

    si vous avez des idées.... je suis preneur!

    recherche et calcul1.xlsx

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 32
    Points : 37
    Points
    37
    Par défaut
    La formule est bonne, sauf le "saut" qui devrait être "saut ". Un problème d'espace donc.
    Supprimer l'espace en B5 serait un grand pas pour la fonctionnalité...

    Ok je sors

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    merci pour ton aide mais même avec espace cela ne fonctionne pas....

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    La formule fonctionne correctement, mais comme dit plus haut, tu as des espaces intempestifs qui posent problème.

    Tu dois donc vérifier chacune des données. Tu peux aussi utiliser la fonction supprespace() dans des cellules adjacentes puis effectuer des copier-collage spécial valeurs pour corriger ce problème d'espaces. C'est la première chose à faire avant de penser que la formule n'est pas fonctionnelle

    Cela étant, une formule plus simple est possible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(((NB.SI(groupe1;B4:R4)>0)*(B5:R5="saut")))+SOMMEPROD(((NB.SI(groupe1;B7:R7)>0)*(B8:R8="saut")))
    Son fonctionnement est identique mais elle est plus courte et plus directe. On vérifie grâce à NB.SI si chaque cellule de B4:R4 reprend un nom proposé dans Groupe1. on récupère donc une première matrice de VRAI et de FAUX. On obtient une seconde matrice qui renvoie VRAI ou FAUX pour chaque cellule de B5:R5 selon qu'elle correspond à Saut ou pas.

    On obtient donc deux matrices composées chacune de 1 et de 0 et on multiplie les valeurs des deux matrices qui sont à la même place (1*1 = 1, 1*0=0). On somme les produits intermédiaires obtenus.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    toutes mes excuses j'avais essayé en supprimant l espace apres saut... mais le problème venait de l'espace après les noms...

    merci ...


    si quelqu'un a une solution pour la disposition de mes données je suis preneur....

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Si tes données suivent la configuration que tu proposes, tu peux utiliser ceci:

    En plaçant les trois entêtes en ligne 1 (Nom, Activité, Classe), par exemple à droite de tes données (Colonne T, par exemple), et pour autant que tu aies bien 17 colonnes et que tes blocs de trois lignes soient collés, tu peux utiliser les trois formules suivantes:
    Pour le nom
    =DECALER($A$1;ENT((LIGNE()-1)/17)*3;MOD(LIGNE()-1;17))
    Pour l'activité
    =DECALER($A$2;ENT((LIGNE()-1)/17)*3;MOD(LIGNE()-1;17))
    Pour la classe
    =DECALER($A$3;ENT((LIGNE()-1)/17)*3;MOD(LIGNE()-1;17))
    Puis tu tires vers le bas sur un nombre de lignes équivalant à 17* nombre de blocs de 3 lignes
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    C'est hallucinant.... comment fais tu pour connaitre toutes ces formules....
    j'ai réussi du coup a faire facilement ma page "miroir".... grâce au copier-collé avec cette formule

    en début de post tu disais

    Ton tableau n'est pas construit de manière à ce que tu puisses réaliser cela facilement. Normalement, une recherche de ce genre est effectuée sur une "table" (une colonne pour les noms, une colonne à côté pour les activités).
    sans vouloir abuser peux tu me dire comment faire du coup
    recherche et calcul2.xlsx

    merci beaucoup!

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Maintenant que tu as créé une table unique pour tes données, tu peux utiliser un seul SOMMEPROD. Sur base de ton tableau, tu utiliseras la formule
    =SOMMEPROD((NB.SI(groupe1;T2:T34)>0)*(U2:U34="saut"))
    Attention, tu as toujours des espaces intempestifs dans le dernier fichier tu as posté.

    Attention, une légère coquille s'est glissée dans mes précédentes formules. Tu dois utiliser
    =DECALER($A$1;ENT((LIGNE()-1)/17)*3;SI(MOD(LIGNE()-1;17)=0;17;MOD(LIGNE()-1;17)))
    =DECALER($A$2;ENT((LIGNE()-1)/17)*3;SI(MOD(LIGNE()-1;17)=0;17;MOD(LIGNE()-1;17)))
    =DECALER($A$3;ENT((LIGNE()-1)/17)*3;SI(MOD(LIGNE()-1;17)=0;17;MOD(LIGNE()-1;17)))
    J'ai dû ajouter un test sur le modulo pour prendre la dernière colonne en compte.

    Bon travail.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Points : 26
    Points
    26
    Par défaut g
    Génial tout fonctionne comme je le souhaitais ..... merci !!

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

Discussions similaires

  1. Macro qui calcule le nombre de cellules avec condition sur couleur
    Par rihab92 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/04/2015, 15h40
  2. Réponses: 2
    Dernier message: 22/06/2012, 10h52
  3. selectionner les cellules qui répondent à ma condition
    Par Yoooo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/10/2008, 14h16
  4. Réponses: 4
    Dernier message: 13/08/2008, 10h03
  5. Réponses: 1
    Dernier message: 10/08/2006, 14h43

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