Famille de feuilles de calcul Microsoft avec des outils pour l’analyse, le graphique et la communication des données.
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é