Bonjour Robinet, bonjour le forum,
La formule NB.SI ne permet pas de compter les valeurs uniques dans une plage mais de compter le nombre de fois qu'une valeur apparaît dans cette plage. Par exemple =NB.SI(A1:B11;1) va renvoyer 3 car le nombre 1 apparaît trois fois dans la plage A1:B11...
Comme je ne sais pas faire par formule, je te propose le code commenté ci-dessous pour obtenir ce que tu désires :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim CEl As Range 'déclare la variable CEL (CELlule)
Dim SD As Variant 'déclare la variable SD (Sans Doublon)
Dim TVU() As Variant 'déclare la variable TVU (Tableau des Valeurs Uniques)
Set O = Sheets("Feuil1") 'définit l'onglet O
Set PL = O.Range("A1").CurrentRegion 'définit la plage PL
O.Range("F1").CurrentRegion.ClearContents 'efface d'éventuelles anciennes données
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For Each CEl In PL 'boucle sur toutes les cellules CEl de la plage PL
D(CEl.Value) = "" 'alimente le dictionnaire D
Next CEl 'prochaine cellule de la boucle
SD = D.keys 'récupère dans le tableau SD la liste des éléments du ditionnaire D sans doublon
For I = 0 To UBound(SD) 'boucle sur tous les éléments du tableau SD
If Application.WorksheetFunction.CountIf(PL, SD(I)) = 1 Then 'condition : si le nombre de fois que l'élément apparaît dans la plage PL est égal à un
ReDim Preserve TVU(J) 'redimensionne le tableau TVU
TVU(J) = SD(I) 'récupère l'élément de SD dans le tableau TVU
J = J + 1 'incrémente J
End If 'fin de la condition
Next I 'prochain élément de la boucle
O.Range("F1").Value = UBound(TVU) + 1 & " valeurs uniques" 'renvoie le nombre de valeurs uniques en F1
For I = 0 To UBound(TVU) 'boucle sur tous les éléments du tableau TVU
O.Cells(I + 2, 6).Value = TVU(I) 'renvoie l'élément du tableau TVU dans la cellule ligne I+2, colonne 6 (=F) de l'onglet O
Next I 'prochain élément de la boucle
End Sub
[Édition]
Bonjour Raja, nos posts se sont croisés.
Moi je propose qu'on les incinère tous ces formulistes. Ils sont trop forts ! C'est à se la prendre, se la couper et se la mettre derrière l'oreille !...