Compter le nombre de modalités

Résolu
jeepipy Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
jeepipy Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche une formule en VBA pour obtenir le nombre de modalités différentes d'une colonne.

Je vous remercie.
Cordialement

5 réponses

Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour
sans VBA, pour un champ de B2 à B28, à adapter

=SOMME(SI(B2:B38<>"";1/NB.SI(B2:B38;B2:B38)))

formule matricielle à entrer avec la touche enter en maintenant les touches ctrl et shift enfoncées
crdlmnt
0
jeepipy Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   155
 
Bonsoir Vaucluse,
je vous remercie mais je recherche une formule vba svp.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

tu revalides la formule en enregistrement de macro pour l'avoir en anglais et R1C1.
Plus qu'à la mettre dans un n=Evaluate("ta_formule")
eric
0
jeepipy Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   155
 
Bonjour Eric,

je vous remercie.
La solution se précise:
la formule Range("G11") = Evaluate("=SUMPRODUCT( 1/COUNTIF(AF3:AF242,AF3:AF242) )") fonctionne bien.
Mais je voudrais travailler sur une colonne dont la taille est dynamique et la formule ci-dessous renvoie une erreur "#valeur".
Range("G11") = Evaluate("=SUMPRODUCT( 1/COUNTIF(AF3:AF " & der_lig & ",AF3:AF" & der_lig & ") )")

Merci de votre aide.

Bonne journée.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour à tous

Puisque tu veux utiliser du VBa, il y a des objets "prets à cuire" qui existent dans ce langage. dans ton cas l'objet dictionary


par exemple avec colonne de taille variable

Option Explicit
'--------
Sub decompter_occurences()
Dim Dico As Object, Derlig As Integer, Tablo
Dim Idx As Integer

Application.ScreenUpdating = False
With Sheets(1)
Set Dico = CreateObject("scripting.dictionary")
Derlig = .Columns("G").Find(what:="*", searchdirection:=xlPrevious).Row
Tablo = .Range("G2:G" & Derlig)
For Idx = 1 To UBound(Tablo)
If Not Dico.exists(Tablo(Idx, 1)) Then: Dico.Add Tablo(Idx, 1), ""
Next

MsgBox Dico.Count & " occurences colonne G"
End With
End Sub


la maquette:
https://mon-partage.fr/f/McOHUqDR/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeepipy Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   155
 
Bonjour Michel,

je vous remercie de votre réponse.
C'est plus compliqué pour moi mais cela fonctionne nickel.

Merci à tous.
0