Compter le nombre de modalités

Résolu
jeepipy Messages postés 88 Statut Membre -  
jeepipy Messages postés 88 Statut Membre -
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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. jeepipy Messages postés 88 Statut Membre 155
     
    Bonsoir Vaucluse,
    je vous remercie mais je recherche une formule vba svp.
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  3. jeepipy Messages postés 88 Statut Membre 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
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeepipy Messages postés 88 Statut Membre 155
     
    Bonjour Michel,

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

    Merci à tous.
    0