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 valeurs uniques dans un range (macro) [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut Compter le nombre de valeurs uniques dans un range (macro)
    Bonjour à tous,

    Je souhaiterai tout simplement savoir, si il existe une fonction qui permette de compter le nombre de valeur unique distincte dans un range.

    J'ai un range, composer des valeurs suivante (à titre d'exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1,5
    1,25
    1
    1,25
    1,5
    2
    2
    Je souhaiterai, que dans le cas présent, il me donne le résultat 4, car 4 valeurs distincte sont présente dans le range.

    J'ai trouvé une fonction sur un site :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub CountUnique()
     
    Dim count As Integer
    Dim i, c, j As Integer
     
    c = 0
    count = 0
    For i = 1 To 11
        Sheet1.Cells(i, 2).Value = Sheet1.Cells(i, 1).Value
        c = c + 1
        For j = 1 To c
            If CDbl(Sheet1.Cells(i, 1).Value) = CDbl(Sheet1.Cells(j, 2).Value) Then
                c = c - 1
                Exit For
            End If
        Next j
    Next i
     
    ' c now equals the unique item count put in the 12'th row
    Sheet1.Cells(12, 1).Value = c
     
    End Sub
    qui ne semble pas trop compliquée à adapter à mes besoins, mais je souhaiterai savoir si il n'existe pas un système "clé en main".

    En vous remerciant pour l'aide que vous pourrez m'apporter, je vous souhaite à tous, de passer une superbe journée.

  2. #2
    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
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Il n'y a pas besoin de VBA; il existe au moins une formule que l'on trouve dans de nombreux forums.
    Les données étant inscrites dans la plage A1:A7, le nombre de valeurs distinctes est obtenu dans n'importe quelle cellule de la feuille avec la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(1/NB.SI(A1:A7;A1:A7))
    Si l'on veut vraiment avoir l'obtention de ce nombre contenue daans du code, plutôt qu'une boucle, on pourra réécrire cette formule en employant ou non la fonction EVALUATE
    et en utlisant la dénomination anglaise des fonctions SOMMEPROD (SUMPRODUCT ) et NB.SI (COUNTIF ).
    Cordialement
    Claude

  3. #3
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Bonjour papouclo,

    Je sais qu'il existe au moins 1.000 manière différentes de le faire par la feuille de calcul, mais le problème, est qu'il me faut le placer dans une macro VBA existante.

    Mais j'ai trouvé la solution à mon problème.

    Je ruse un coup.

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set iCoef = CreateObject("Scripting.dictionary")
    For Each c In .Range("B2:B" & .Range("B" & .Rows.count).End(xlUp).Row)
        If Not iCoef.Exists(c.Value) Then iCoef.Add c.Value, c.Offset(0, -1).Value
    Next c
    nbCoef = iCoef.count
    Explications
    Voici ma feuille en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tranche	coefficient
    22h-6h	1,5
    6h-8h	1,25
    8h-17h	1
    17h-22h	1,25
    samedi	1,5
    dimanche	2
    férié	2
    Et je voulais donc compter le nombre de coefficient différent dans le range spécifié.
    J'ai donc "tout simplement" créé une variable "iCoef" de type "scripting.dictionary", et ai ajouter les coefficients en tant que clé, mais en précisant que la clé ne devait pas exister lors de l'ajout
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Not iCoef.Exists(c.Value)
    Une fois mon dictionnaire compléter, un simple count et le tour est joué.

    En espérant que cette astuce permettra à certains d'entre vous d'avancer, je vous souhaite à tous de passer une excellente journée.

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

Discussions similaires

  1. [2008R2] Compter le nombre de valeurs nulles dans une mesure
    Par kavuza dans le forum SSAS
    Réponses: 5
    Dernier message: 04/05/2012, 15h57
  2. compter le nombre de valeurs distinctes dans une colonne
    Par huître dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/06/2011, 20h31
  3. [XL-2010] Comment compter le nombre de valeur identique dans un sheet.
    Par zoltix dans le forum Excel
    Réponses: 4
    Dernier message: 24/04/2011, 00h06
  4. [WD-2003] Compter le nombre de valeurs identiques dans un tableau word
    Par borocam dans le forum VBA Word
    Réponses: 4
    Dernier message: 20/01/2010, 19h19
  5. [MySQL] Compter le nombre de valeurs identiques dans une colonne d'une table
    Par luca120 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2009, 01h40

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