Compter le nombre de noms uniques dans un tableau
Résolu/Fermé
andy2092
Messages postés
78
Date d'inscription
dimanche 13 mai 2018
Statut
Membre
Dernière intervention
7 février 2024
-
4 janv. 2024 à 10:00
cousinhub29 Messages postés 978 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 3 janvier 2025 - 5 janv. 2024 à 08:33
cousinhub29 Messages postés 978 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 3 janvier 2025 - 5 janv. 2024 à 08:33
A voir également:
- Compter le nombre de noms uniques dans un tableau
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
3 réponses
cousinhub29
Messages postés
978
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
3 janvier 2025
348
Modifié le 5 janv. 2024 à 08:35
Modifié le 5 janv. 2024 à 08:35
Bonjour,
Le code commenté (les commentaires sont précédés d'une apostrophe)
Bonne journée
'Code de la fonction, avec entre parenthèse, la plage de cellules insérée
'dans la formule sur la feuille de calcul
Function nb_pers(Plg As Range) As Long
'Déclaration des variables
Dim Tbl, Noms
Dim I As Long, J As Long
Dim Nb_Uniq As Object
'Initialisation d'un objet "Dictionnaire"
Set Nb_Uniq = CreateObject("Scripting.Dictionary")
'Enregistrement des valeurs de la plage dans un tableau VBA
Tbl = Plg.Value
'Balayage de la plage, en partant de la première valeur à la dernière
For I = LBound(Tbl) To UBound(Tbl)
'Si la valeur est non nulle (cellule non vide)
If Tbl(I, 1) <> "" Then
'On split (éclate) la valeur en plusieurs selon le délimiteur ;
Noms = Split(Tbl(I, 1), ";")
'On balaie tous les noms inscrits dans la cellule
For J = LBound(Noms) To UBound(Noms)
'Et on charge le nom (sans les espaces éventuels) dans le champ de clés du dictionnaire
'Comme une clé est unique dans ce dictionnaire, un nom ne sera
'donc enregistré qu'une seule fois
Nb_Uniq(Trim(Noms(J))) = ""
Next J
End If
Next I
'le nombre de personnes uniques est donc le nombre d'éléments dans le dictionnaire
nb_pers = Nb_Uniq.Count
End Function
cousinhub29
Messages postés
978
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
3 janvier 2025
348
4 janv. 2024 à 10:48
4 janv. 2024 à 10:48
Bonjour,
Si tu avais pu joindre un fichier test, cela nous aurait évité d'en re-créer un...
Avec une fonction VBA personnalisée
Dans le fichier joint, j'ai mis le tableau sous forme de Tableau Structuré, ainsi si tu ajoutes des lignes, ce sera pris dans la fonction
Et dans la cellule E2, cette formule faisant appel à la fonction perso :
=nb_pers(Tableau1[Personnes inclus dans les groupes])
Le code de la fonction :
Function nb_pers(Plg As Range) As Long Dim Tbl, Noms Dim I As Long, J As Long Dim Nb_Uniq As Object Set Nb_Uniq = CreateObject("Scripting.Dictionary") Tbl = Plg.Value For I = LBound(Tbl) To UBound(Tbl) If Tbl(I, 1) <> "" Then Noms = Split(Tbl(I, 1), ";") For J = LBound(Noms) To UBound(Noms) Nb_Uniq(Trim(Noms(J))) = "" Next J End If Next I nb_pers = Nb_Uniq.Count End Function
Et le fichier exemple :
https://www.cjoint.com/c/NAejVZ3VUi1
Bonne journée
andy2092
Messages postés
78
Date d'inscription
dimanche 13 mai 2018
Statut
Membre
Dernière intervention
7 février 2024
4 janv. 2024 à 17:08
4 janv. 2024 à 17:08
Ca fonctionne très bien ! Merci beaucoup.
Par contre je n'ai pas vraiment de notion vba.
Pourrais-tu m'expliquer brièvement ce que le code fait ?