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 :

SOMMEPROD avec du texte "contient" [XL-2010]


Sujet :

Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut SOMMEPROD avec du texte "contient"
    Bonjour,

    Je rencontre un petit problème d'utilisation de la formule SOMMEPROD avec du texte, c'est-à-dire que j'aimerais savoir si il est possible de combiner SOMMEPROD avec un filtre "contient".

    Exemple avec deux colonnes:
    A--------------B
    PARIS-----Niveau trop bas
    PARIS-----Niveau trop haut
    PARIS-----Comm.
    LYON------Intrusion
    LYON------Intrusion
    LYON------Etat haut

    Et j'aimerais compter combien ont en colonne A "PARIS" ET en colonne B contienne "Niveau".

    Pour le moment je me sert de la formule =SOMMEPROD((A:A="PARIS")*(B:B="Niveau trop bas")), qui me compte bien qu'il y en a un seul.
    Mais dans mon cas ayant plus de 10 000 lignes, et bien trop de cellules différentes mais contenant le mot "Niveau" en commun, j'aurais aimer savoir si il existe une solution.

    D'avance merci, pour votre aide.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Sommeprod((A:A="PARIS")*(gauche(B:B;6)="Niveau"))

  3. #3
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    A tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((A:A="Paris")*(B:B=TROUVE("Niveau";B11;1)>0))

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut
    Tout d'abord merci, mais il arrive que le mot clef soit au milieu c'est à dire "Attente niveau trés haut". Dans ce cas "niveau" se trouve au milieu d'autres mots.

  5. #5
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Tu peux essayer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((A:A="PARIS")*(NON(ESTERREUR(TROUVE("niveau";B:B)))))

    • TROUVE("niveau";B:B) : renvoie une erreur #VALEUR lorsque la cellule ne contient pas "niveau"
    • ESTERREUR(TROUVE("niveau";B:B)) : renvoie VRAI lorsque la cellule ne contient pas "niveau"
    • NON(ESTERREUR(TROUVE("niveau";B:B))) : renvoie donc VRAI lorsque la cellule contient "niveau"


    Du coup, SOMMEPROD en tient compte

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut
    Citation Envoyé par QuestVba Voir le message
    Bonjour,

    Tu peux essayer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((A:A="PARIS")*(NON(ESTERREUR(TROUVE("niveau";B:B)))))

    • TROUVE("niveau";B:B) : renvoie une erreur #VALEUR lorsque la cellule ne contient pas "niveau"
    • ESTERREUR(TROUVE("niveau";B:B)) : renvoie VRAI lorsque la cellule ne contient pas "niveau"
    • NON(ESTERREUR(TROUVE("niveau";B:B))) : renvoie donc VRAI lorsque la cellule contient "niveau"


    Du coup, SOMMEPROD en tient compte
    Merci beaucoup QuestVba, cela fonctionne a merveille, est il possible d'ajouter plus "d'objet" a la recherche ? C'est-à-dire rajouter dans la colonne B, "trop" avec en plus "Réservoir" a savoir que ces deux objets ne sont pas dans la même cellule.

    J'ai essayé de doubler la deuxième partie de la fonction, mais sans succès.

  7. #7
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Une autre proposition avec la formule NB.SI.ENS (à partir d'Excel 2007) et le caractère générique *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS(A:A;"PARIS";B:B;"*niveau*")
    Cordialement
    Claude

  8. #8
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Tu veux utiliser combien de critères ? Comment veux-tu compter si les critères sont dans la même cellule ?

    tu peux faire une addition de SOMMEPROD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((A:A="PARIS")*(NON(ESTERREUR(TROUVE("niveau";B:B)))))+SOMMEPROD((A:A="PARIS")*(NON(ESTERREUR(TROUVE("haut";B:B)))))

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut
    Bonjour, encore merci de vos réponses.

    Citation Envoyé par papouclo Voir le message
    Bonjour,
    Une autre proposition avec la formule NB.SI.ENS (à partir d'Excel 2007) et le caractère générique *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS(A:A;"PARIS";B:B;"*niveau*")
    Cordialement
    Claude
    Merci Claude, cette fonction fonctionne très bien aussi, mais lorsque j'ai essayé de m'en servir hier, elle m'indiquait 0, je ne comprend pas pourquoi maintenant elle fonctionne, j'ai du très probablement faire une erreur de syntaxe.

    Citation Envoyé par QuestVba Voir le message
    Tu veux utiliser combien de critères ? Comment veux-tu compter si les critères sont dans la même cellule ?
    Ces deux questions me sont elles destinés ? Si oui, je ne comprend pas tout a fait.

  10. #10
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Oui, je n'ai pas compris (également) ceci:

    est il possible d'ajouter plus "d'objet" a la recherche ? C'est-à-dire rajouter dans la colonne B, "trop" avec en plus "Réservoir" a savoir que ces deux objets ne sont pas dans la même cellule.

    J'ai essayé de doubler la deuxième partie de la fonction, mais sans succès.

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut
    Bonjour,

    Citation Envoyé par QuestVba Voir le message
    Bonjour,

    Oui, je n'ai pas compris (également) ceci:
    C'est en rapport avec cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((A:A="PARIS")*(NON(ESTERREUR(TROUVE("niveau";B:B)))))
    Savoir si il est possible en plus de "niveau" chercher toujours dans la même colonne "courant".
    Un peu comme ça, bien que la fonction soit fausse dans ce cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((A:A="PARIS")*(NON(ESTERREUR(TROUVE("niveau";"courant";B:B)))))
    En espérant que ce soit clair.

  12. #12
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Avec le premier tableau de données légèrement modifié (PARIS au lieu de LYON en A6) , le nombre de lignes avec PARIS en colonne A et niveau ou haut en colonne B est donné par la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS(A:A;"paris";B:B;"*niveau*") + NB.SI.ENS(A:A;"paris";B:B;"*haut*") - NB.SI.ENS(A:A;"paris";B:B;"*niveau*haut*")
    [IMG][/IMG]
    La première partie de la formule, c'est à dire la somme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = NB.SI.ENS(A:A;"paris";B:B;"*niveau*") + NB.SI.ENS(A:A;"paris";B:B;"*haut*")
    peut s'obtenir encore avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = SOMMEPROD ( NB.SI.ENS ( A:A ; "paris" ; B:B ; "*" & {"niveau";"haut"} & "*" ) )
    Cordialement
    Claude

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    - NB.SI.ENS(A:A;"paris";B:B;"*niveau*haut*")
    Si j'ai bien compris, cette partie de la fonction permet de supprimer les doublons ? En tout cas bravo, j'ai à apprendre sur Excel, qui m'a l'air d'être un logiciel hyper complet.

  14. #14
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Billets dans le blog
    1
    Par défaut
    la formule est une somme de trois termes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS(A:A;"paris";B:B;"*niveau*") + NB.SI.ENS(A:A;"paris";B:B;"*haut*") - NB.SI.ENS(A:A;"paris";B:B;"*niveau*haut*")
    Le premier terme NB.SI.ENS(A:A;"paris";B:B;"*niveau*") décompte les lignes contenant niveau en colonne B (et bien sûr Paris en colonne A). La ligne 2 est donc comptée à ce moment .
    Le deuxième terme NB.SI.ENS(A:A;"paris";B:B;"*haut*") décompte les lignes contenant haut en colonne B. La ligne 2 est donc comptée une seconde fois à ce moment.
    Elle est comptée 2 fois donc une fois de trop comme toutes les lignes contenant à la fois niveau et haut en colonne B et bien sûr Paris en A.
    NB.SI.ENS(A:A;"paris";B:B;"*niveau*haut*") décompte les lignes contenant simultanément niveau et haut en colonne B. En retranchant ce troisième décompte de la somme des deux premiers,
    on corrige donc le problème précédemment évoqué.
    Cordialement
    Claude

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

Discussions similaires

  1. [XL-2013] Sommeprod avec filtre contient que des lettres d'un texte
    Par iliesss dans le forum Excel
    Réponses: 4
    Dernier message: 01/10/2014, 09h53
  2. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59

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