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 :

Formule pour compter le nombre d'éléments uniques ET dont le nom ne commence pas par "!" [XL-2016]


Sujet :

Excel

  1. #1
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut Formule pour compter le nombre d'éléments uniques ET dont le nom ne commence pas par "!"
    Bonjour.
    Utilisant Excel pour ma comptabilité, j'emploie depuis longtemps la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(1/NB.SI(INDIRECT("H3:H"&EQUIV("z";H:H));INDIRECT("H3:H"&EQUIV("z";H:H))))
    pour compter le nombre d'éléments uniques d'une liste (dans mon cas le nombre de clients unitaires).
    EQUIV("z";H:H) servant à récupérer la ligne du dernier élément de la liste.

    Depuis peu, j'ai introduit des entrées d'argent qui ne proviennent pas de mes clients, par exemple une rétrocession de la banque ou une aide financière.
    Je ne souhaite pas que ces lignes soient comptabilisées dans mes recettes car le total trimestriel est déclaré à l'URSSAF et ces éléments ne doivent pas être comptabilisés. J'ai donc trouvé comme solution de mettre un point d'exclamation au début du libellé et de faire un filtre qui les exclurait du total mensuel...
    Pour compter ces lignes particulières, j'utilise la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI(INDIRECT("H3:H"&EQUIV("z";H:H));"!*")
    Mon idée est donc d'essayer de combiner les deux formules afin, comme l'indique le titre de cette discussion, de compter le nombre de clients uniques ET dont le nom ne commence pas par "!". J'ai donc pensé à utiliser NB.SI.ENS au lieu de NB.SI afin d'ajouter comme condition "<>!*" (ne commence pas par "!"). Ça donne donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(1/NB.SI.ENS(INDIRECT("H3:H"&EQUIV("z";H:H));INDIRECT("H3:H"&EQUIV("z";H:H));INDIRECT("H3:H"&EQUIV("z";H:H));"<>!*"))
    Mais je tombe sur une erreur "#DIV/0!" :-(

    Vu la complexité que ça prend, cela dépasse mes modestes compétences en formules et je ne sais pas trop comment m'y prendre pour arriver au résultat souhaité.
    Je fais donc appel à vos propositions, y compris dans la méthode, car j'imagine que ce problème a déjà du se poser pour ceux qui ont la même utilisation que moi de leur tableur...

    Merci par avance =)
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    As-tu essayé de faire un pas à pas sur ta formule avec Excel pour voir quelle était le morceau qui pose souci ?
    Car là, typiquement, ça trouve 0, car c'est ta division qui pose souci.

    Sinon, tu as essayé avec un autre signe que le "!" ? Par exemple un "|" ? Si ça se trouve, le ! il ne comprend pas car c'est un séparateur de feuille...
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Bonjour illight. Oui j'ai essayé. La première partie de la formule (nombre de valeurs uniques) retourne 15 et la seconde (valeurs ne commençant pas par "!") retourne 15 aussi. Après je suis un peu largué. Je n'ai déjà pas compris le fonctionnement de la première partie avec la division...
    Le "!" ne semble pas poser problème, le résultat est le même avec "|".
    Si tu ou quelqu'un d'autre a une idée...

    Merci
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((GAUCHE(INDIRECT("H3:H"&EQUIV("z";H:H));1)<>"!")*(1/NB.SI(INDIRECT("H3:H"&EQUIV("z";H:H));INDIRECT("H3:H"&EQUIV("z";H:H)))))
    Cdlt

  5. #5
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Wow, merci Arturo, ça fonctionne !
    Par simple curiosité intellectuelle, tu aurais la gentillesse de m'expliquer comment tu as procédé ?
    Sinon tant pis, je ne veux pas abuser de ton temps...

    Merci à tous les deux pour vos réponses en tout cas
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Explications en technicolor

    A la formule initiale,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(1/NB.SI.ENS(INDIRECT("H3:H"&EQUIV("z";H:H));INDIRECT("H3:H"&EQUIV("z";H:H));INDIRECT("H3:H"&EQUIV("z";H:H))
    il suffit de faire un ET logique avec la formule suivante incluse dans le SOMMEPROD, (le Et logique est l'* entre les 2 formules)
    Si le premier caractère de gauche est différent de "!" , on applique la formule du comptage de valeurs uniques.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (GAUCHE(INDIRECT("H3:H"&EQUIV("z";H:H));1)<>"!")
    La formule entière
    =SOMMEPROD((GAUCHE(INDIRECT("H3:H"&EQUIV("z";H:H));1)<>"!")*(1/NB.SI(INDIRECT("H3:H"&EQUIV("z";H:H));INDIRECT("H3:H"&EQUIV("z";H:H)))))

    Voilà , c'est tout.

    Cdlt

  7. #7
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    C'est très clair, merci !
    L'élément qui me manquait était le caractère "*" dont j'ignorais qu'il représentait le ET logique.
    Du coup le OU est le caractère "/" ?

    Autre question : ton GAUCHE(blabla<>"!") n'est pas équivalent à mon blabla"<>!*" ?
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Du coup le OU est le caractère "/" ?
    NON, si le ET est "*", le OU est "+"

    Autre question : ton GAUCHE(blabla<>"!") n'est pas équivalent à mon blabla"<>!*" ?
    Probablement, il suffit de l'essayer pour s'en assurer.

    Cdlt

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/01/2018, 11h17
  2. Réponses: 4
    Dernier message: 25/02/2015, 20h16
  3. [XL-2013] Formule pour compter nombre de mois de date à date
    Par Chacha40 dans le forum Excel
    Réponses: 2
    Dernier message: 17/06/2014, 09h02
  4. Réponses: 5
    Dernier message: 02/06/2014, 09h45
  5. Compter le nombre d'éléments uniques
    Par Newenda dans le forum MATLAB
    Réponses: 5
    Dernier message: 18/06/2009, 17h00

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