Bonjour linette44,
Voici une solution possibe:
- Tu crée un tableau dans lequel tu mets les valeurs de ta colonne
- Tu classe les éléments de ce tableau par ordre croissant
- Tu met un compteur qui parcourt le tableau et qui s'incrémente à chaque fois qu'il trouve deux cases successives de valeurs différentes.
Voici le code correspondant:
Sub nombreValeurs()
'Tu crée un tableau où tu va mettre les valeurs de ta colonne
Dim monTableau(5) As String 'tu mets la taille de ton tableau
Dim i, j, n As Integer
Dim myRange As Range
Dim R As Range
i = 0
j = 0
k = 0
n = 1
Set myRange = Range("A2:A6")
For Each R In myRange
If R.Value <> "" Then '(non vides)
monTableau(k) = R.Value
k = k + 1
End If
Next R
' Tri croissant du tableau
Dim str As String
For i = 0 To UBound(monTableau) - 2
For j = i + 1 To UBound(monTableau) - 1
If monTableau(i) > monTableau(j) Then
str = monTableau(i)
monTableau(i) = monTableau(j)
monTableau(j) = str
End If
Next j
Next i
'Calcul de n, le nombre de valeurs
For i = 0 To UBound(monTableau) - 2
If monTableau(i) <> monTableau(i + 1) Then
n = n + 1
End If
Next i
ActiveSheet.Range("A1") = n
End Sub
Je voulais te demander comment tu as fait pour sortir la formule pour compter des valeurs différentes dans un excel!!
Tu m'as vraiment impressionné!
Si ça ne te dérange pas, pourrais tu m'expliquer la formule...
Je ne comprend pas ce que fait la formule 1/NB.SI(MA PLAGE:MA PLAGE), ainsi que la SOMME en terme de matrice...
Je te remercie d'avance.
Bonne journée.
il s'agit plus d'une astuce mathématique qu'une astuce excel.
Le but est que si une entrée est présente x fois elle compte pour x fois moins, ce que fait 1/x.
Par exemple si entrée présente 2 fois (donné par le nb.si()) chaque entrée aura un poids de 1/2 (somme=1), 3 fois => 1/3 (somme=1), etc. Soit 1 pour la somme de chaque entrée différente.
Il ne reste plus qu'à faire la somme des 1/x pour avoir le nombre d'entrées.
D'où la formule :
=SOMME(1/NB.SI(A2:A6;A2:A6))
qu'il faut valider en matriciel car certaines fonctions excel ne sont pas matricielles par défaut.
C'est éclairci ?
eric
Je te remercie pour ta réponse, continue comme ça!
Bonne journée,
Cordialement.