Compter le nombre de modalités

Résolu
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

  1. Contributeur
    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
    1. Bonsoir Vaucluse,
      je vous remercie mais je recherche une formule vba svp.
      1. Contributeur
        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
    2. 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.
      1. Contributeur
        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/
        1. Bonjour Michel,

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

          Merci à tous.