Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2012, 13h45   #1
Invité régulier
 
Inscription : avril 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 45
Points : 8
Points : 8
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
mcog2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2012, 15h53   #2
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonjour,

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

Code :
=SOMMEPROD((B1:B300<>"")/NB.SI(B1:B300;B1:B300&""))
source solution traduite et adaptée de : >>ici<<
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/01/2012, 15h57   #3
Invité régulier
 
Inscription : avril 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 45
Points : 8
Points : 8
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
mcog2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 08h31   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
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
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 21h22   #5
Invité régulier
 
Inscription : avril 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 45
Points : 8
Points : 8
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
mcog2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 01h53   #6
Invité régulier
 
Inscription : avril 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 45
Points : 8
Points : 8
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
mcog2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 07h54   #7
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
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 :
=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
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 13h17   #8
Invité régulier
 
Inscription : avril 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 45
Points : 8
Points : 8
Merci BlueMonkey,
J'essaye de comprendre :
Citation:
=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
mcog2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 00h31   #9
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonsoir,

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

Citation:
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
Type de fichier : zip sommeprod.zip (6,1 Ko, 7 affichages)
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 22h21   #10
Invité régulier
 
Inscription : avril 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 45
Points : 8
Points : 8
BlueMonkey, merci, je regarde cela en début de semaine, et j'informe...
@+
Olivier
mcog2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h36.


 
 
 
 
Partenaires

Hébergement Web