Partager via

Compter sans doublons

Anonyme
2010-08-06T14:32:30+00:00

Hello tout le monde

J'ai un petit problème de comptage :

Soit deux colonnes, une colonne Pays et une colonne Année.

J'ai besoin de compter, via formule, le nombre de pays unique pour une année en particulier.

Pour compter le nb d'éléments unique (sans doublon) j'utilisais cette formule :

=SOMME(SI(FREQUENCE(EQUIV(Pays;Pays;0);EQUIV(Pays;Pays;0))>0;1))

Je ne vois pas comment intégrer mon critère Année.

Merci à tous pour vos idées.

Circé

http://faqword.com

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

Anonyme
2010-08-07T11:40:47+00:00

Voici les 2 fonctions précédentes adaptées au fait qu'au moins une cellule dans la plage Pays puisse être vide.

En Chinoiserie :

'-----------------------

Validation matricielle :

=NB(1/FREQUENCE(SI((Plg<>"")*(Plg=Plg)*(Ans=2010);EQUIV(Plg;Plg;0)+CELLULE("Row";Plg)-1);LIGNE(Plg)))

'-----------------------

En Vba :

'-----------------------

Function ValUnique(Plage As Range, année As Range, critère As Integer)

Dim Dicto As Object, A As Long, Nb As Long

Set Dicto = CreateObject("Scripting.Dictionary")

Nb = Plage.Cells.Count

For A = 1 To Nb

    If Plage(A, 1) <> "" Then

        If Plage(A, 1) & année(A, 1) = Plage(A, 1) & critère Then

            If Not Dicto.Exists(Plage(A, 1) & année(A, 1)) Then

                Dicto.Add Plage(A, 1) & année(A, 1), A

            End If

        End If

    End If

Next

ValUnique = Dicto.Count

Set Cellule = Nothing: Set Dicto = Nothing

End Function

'-----------------------


MichD


"MichD" <*** Adresse électronique supprimée pour cause de confidentialité ***> a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

à moins que tu préfères ce type de chinoiseries ;-)

Plg pour la plage pays et

Ans pour la plage des années

Tu peux remplacer 2010 par une adresse de cellule évidemment.

Validation matricielle :

=NB(1/FREQUENCE(SI((Plg=Plg)*(Ans=2010);EQUIV(Plg;Plg;0)+CELLULE("Row";Plg)-1);LIGNE(Plg)))


MichD


"MichD" <*** Adresse électronique supprimée pour cause de confidentialité ***> a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

On va en faire une fonction pour tes besoins :

Dans la cellule contenant le résultat :

=ValUnique(Pays;Année;2010)

Pays et Année sont des plages nommées.

2010 et l'année désirée

Dans un module Standard :

'-------------------------------- Function ValUnique(Plage As Range, année As Range, critère As Integer)

Dim Dicto As Object, A As Long, Nb As Long

Set Dicto = CreateObject("Scripting.Dictionary")

Nb = Plage.Cells.Count

For A = 1 To Nb

    If Plage(A, 1) & année(A, 1) = Plage(A, 1) & critère Then

        If Not Dicto.Exists(Plage(A, 1) & année(A, 1)) Then

            Dicto.Add Plage(A, 1) & année(A, 1), A

        End If

    End If

Next

ValUnique = Dicto.Count

Set Cellule = Nothing: Set Dicto = Nothing

End Function

'--------------------------------


MichD

-------------------------------------------- "Circé" a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

Bonsoir

Je me suis fait peut être mal comprendre... mais ta formule me retourne un résultat faux.

Voilà un exemple :

Pays     Période

France   2009

France   2010

France   2010

Grèce    2010

Grèce    2010

Italie     2009

France   2009

Je voudrais trouver par exemple le nombre de pays sans doublon pour l'année 2010. Dans mon exemple, il y en a 2. Est-ce plus clair ?

Circé

http://faqword.com

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

Anonyme
2010-08-07T10:51:51+00:00

Le 06/08/2010 16:32, Circé [MVP] a écrit :

Hello tout le monde

J'ai un petit problème de comptage :

Soit deux colonnes, une colonne Pays et une colonne Année.

J'ai besoin de compter, via formule, le nombre de pays unique pour une année en particulier.

Pour compter le nb d'éléments unique (sans doublon) j'utilisais cette formule :

=SOMME(SI(FREQUENCE(EQUIV(Pays;Pays;0);EQUIV(Pays;Pays;0))>0;1))

Je ne vois pas comment intégrer mon critère Année.

Merci à tous pour vos idées.

Circé

http://faqword.com

Hello

Une autre chinoiserie, en matricielle :

=SOMME(SI(FREQUENCE(SI(ans=2010;SI(pays<>"";EQUIV(pays;pays;0)));LIGNE(pays)-LIGNE($A$2)+1)>0;1))

tu peux remplacer 2010 par la ref à une cellule ou tu mets ton critère bien sur.


Misange - www.excelabo.net Si vous voulez consulter et participer à ce forum en utilisant un lecteur de news comme windows live mail, thunderbird suivez ce tuto : http://www.excelabo.net/web/nntp-bridge

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

20 réponses supplémentaires

  1. Anonyme
    2010-08-06T20:42:16+00:00

    On va en faire une fonction pour tes besoins :

    Dans la cellule contenant le résultat :

    =ValUnique(Pays;Année;2010)

    Pays et Année sont des plages nommées.

    2010 et l'année désirée

    Dans un module Standard :

    '-------------------------------- Function ValUnique(Plage As Range, année As Range, critère As Integer)

    Dim Dicto As Object, A As Long, Nb As Long

    Set Dicto = CreateObject("Scripting.Dictionary")

    Nb = Plage.Cells.Count

    For A = 1 To Nb

        If Plage(A, 1) & année(A, 1) = Plage(A, 1) & critère Then

            If Not Dicto.Exists(Plage(A, 1) & année(A, 1)) Then

                Dicto.Add Plage(A, 1) & année(A, 1), A

            End If

        End If

    Next

    ValUnique = Dicto.Count

    Set Cellule = Nothing: Set Dicto = Nothing

    End Function

    '--------------------------------


    MichD


    "Circé" a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

    Bonsoir

    Je me suis fait peut être mal comprendre... mais ta formule me retourne un résultat faux.

    Voilà un exemple :

    Pays     Période

    France   2009

    France   2010

    France   2010

    Grèce    2010

    Grèce    2010

    Italie     2009

    France   2009

    Je voudrais trouver par exemple le nombre de pays sans doublon pour l'année 2010. Dans mon exemple, il y en a 2. Est-ce plus clair ?

    Circé

    http://faqword.com

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2010-08-06T17:38:46+00:00

    Bonsoir

    Je me suis fait peut être mal comprendre... mais ta formule me retourne un résultat faux.

    Voilà un exemple :

    Pays     Période

    France   2009

    France   2010

    France   2010

    Grèce    2010

    Grèce    2010

    Italie     2009

    France   2009

    Je voudrais trouver par exemple le nombre de pays sans doublon pour l'année 2010. Dans mon exemple, il y en a 2. Est-ce plus clair ?

    Circé

    http://faqword.com

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2010-08-06T16:06:30+00:00

    Bonjour,

    Je ne suis pas sûr d'avoir compris ta demande??

    Essaie ceci :

    Plage nommée : pays et an pour la colonne date

    Validation matricielle :

    =PLAFOND(SOMME(SI(an=2000;1/NB.SI(Pays;Pays)));1)


    MichD


    "Circé" a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

    Hello tout le monde

    J'ai un petit problème de comptage :

    Soit deux colonnes, une colonne Pays et une colonne Année.

    J'ai besoin de compter, via formule, le nombre de pays unique pour une année en particulier.

    Pour compter le nb d'éléments unique (sans doublon) j'utilisais cette formule :

    =SOMME(SI(FREQUENCE(EQUIV(Pays;Pays;0);EQUIV(Pays;Pays;0))>0;1))

    Je ne vois pas comment intégrer mon critère Année.

    Merci à tous pour vos idées.

    Circé

    http://faqword.com

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire