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 :

Compter le nombre de noms différents dans une colonne [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut Compter le nombre de noms différents dans une colonne
    Bonjour,
    J'ai une colonne B qui possède de nombreux noms (nom+prénom), parfois certain se répètent.
    J'aimerai savoir combien de noms différents j'ai dans cette colonne B.
    Y a-t-il une fonction qui fait cela rapidement ?
    Merci,
    @+
    Olivier

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    Pour compter le nombre d'entrée différente dans les 300 premières lignes de la colonne B.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((B1:B300<>"")/NB.SI(B1:B300;B1:B300&""))
    source solution traduite et adaptée de : >>ici<<

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Tout d'abord, merci pour la réponse,
    En effet, cela fonctionne et je comprend l'approche, mais n'existe-t-il pas une fonction en vba ?
    Merci,
    @+
    Olivier

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Citation Envoyé par aide VBA
    Référence du développeur Excel
    WorksheetFunction.CountIf, méthode
    Compte le nombre de cellules à l'intérieur d'une plage qui répondent aux critères donnés.
    Syntaxe

    expression.CountIf(Arg1, Arg2)

    expression Variable qui représente un objet WorksheetFunction.

    Paramètres

    Nom Obligatoire/Facultatif Type de données Description
    Arg1 Obligatoire Plage La plage de cellules dans laquelle vous voulez compter les cellules.
    Arg2 Obligatoire Variante Le critère définissant les cellules affectées. Il peut prendre la forme d'un nombre, d'une expression, d'une référence de cellule ou de texte. Par exemple, 32, "32", ">32", "pommes" ou B4.

    Valeur renvoyée
    Double

    Remarques


    Vous pouvez inclure les caractères génériques suivants dans les critères : le point d'interrogation (?) et l'astérisque (*). Le premier correspond à tout caractère unique et le second à toute séquence de caractères. Pour rechercher un réel point d'interrogation ou astérisque, entrez un tilde (~) devant le caractère.
    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Ormonth, je suspecte fortement que countif est la fct que je cherche...
    J'explique en détail mon sujet :
    J'ai une colonne A qui possède l'info NB ou CP. Dans une colonne B j'ai les Noms et prénoms.
    Je veux connaitre le nombre de noms différents en NB et CP. Je sais faire avec des boucles, mais je suspecte que countif va gérer cela...
    Je vais fouiller cela...
    Merci,
    @+
    Olivier

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Je cherche depuis plusieurs heures et je m'appercois que le countif ne fonctionne pas en multi-conditions.

    BlueMonkey : Je pense que ta solution est pas loin des besoins :
    1 - Comment traduire cela en VBA sans injecter une formule dans une cellule, mais en injectant le résultat dans une variable ?
    2 - Je suis conscient que je n'avais pas parlé des multi-conditions, mais comment compter le nombre d'occurences avec un critère situé dans une autres colonne.
    Pour résumer : Compter le nombre de noms différents dans la cononne B ayant un textes "NB" comme information dans une colonne A ?
    Je m'excuse de ne pas avoir été précis dans ma première demande, en fait je découvre la complexité du besoin en fouillant, car moi même j'ai évolué dans mon besoin (clair maintenant).
    Merci,
    @+
    Olivier

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    Pour le nouveau besoin :
    - filtre sur la présence de NB en colonne A
    - compte le nombre d'entrée unique en colonne B
    ... la formule sous Excel s'écrirait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((A1:A300="NB")*(B1:B300<>"")/NB.SI(B1:B300;B1:B300&""))
    Pour le transposer en VBA :
    - utiliser soit Evaluate("<l'expression excel>")
    - soit utiliser WorksheetFunction.SumProduct et WorksheetFunction.CountIf
    en remplacement de SOMMEPROD et NB.SI

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Merci BlueMonkey,
    J'essaye de comprendre :
    =SOMMEPROD((A1:A300="NB")*(B1:B300<>"")/NB.SI(B1:B300;B1:B300&""))
    Si je traduit, tu fais :
    La somme si j'ai "NB" dans les 300 premières cellules de la colonne A, si j'ai quelque chose différent de vide dans les 300 premières cellules de la colonne B.
    Par contre à quoi sert ce signe "/"
    Et que veut dire : B300&"" ?
    Je vais comprendre.
    Merci,
    Olivier

  9. #9
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonsoir,

    Par contre à quoi sert ce signe "/"
    il s'agit bien d'une division. (démonstration dans exemple ci-joint)

    Et que veut dire : B300&"" ?
    Le second paramètre de la fonction NB.SI() est une condition [B]
    J'interprète cette écriture comme permettant de :
    - récupérer la valeur de chaque cellule de la plage B1:B300.
    - Puis de transformer la valeur au format texte avec la concaténation &""
    afin l'utiliser comme critère de test.

    Pour bien comprendre :
    - le comptage d'élément unique : voir >>ici<<

    - présentation simple de SOMMEPROD(<critère 1> x ... x <critère n> x <champs à aditionner>) >>ici<<

    - une décomposition de SOMMEPROD en opérations simples (voir fichier joint)

    Rmq : La formule dans son état actuelle n'est pas parfaite : si un prénom existe hors plage COL<A>="NB",
    le nombre d'éléments unique est faux.
    Fichiers attachés Fichiers attachés

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    BlueMonkey, merci, je regarde cela en début de semaine, et j'informe...
    @+
    Olivier

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Parfait,
    Merci,
    @+
    Olivier

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

Discussions similaires

  1. [XL-2007] Compter le nombre de valeurs différente dans une colonne
    Par Mist-e-Fire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/04/2013, 09h01
  2. Réponses: 1
    Dernier message: 22/05/2012, 19h15
  3. [XL-2007] Formule nombre de noms différents dans une colonne
    Par Diyoris dans le forum Excel
    Réponses: 2
    Dernier message: 06/05/2010, 10h13
  4. Réponses: 28
    Dernier message: 11/10/2006, 22h36
  5. Nombre de valeurs différentes dans une colonne
    Par KrusK dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/08/2005, 14h18

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