Nombre de cellules différentes dans une colonne suite à un filtre VBA

3test.xlsm (29.03 Ko)

Bonjour,

Je possède un tableau de 4 colonnes,

Dans un premier temps je fais un filtre sur la deuxième colonne(numéro de commande)

Ensuite la ou je coince, je voudrais récupérer le nombre d'option différente sur ce numéro de commande

Ci-dessous mon code, ci-joint le fichier,

Si quelqu'un pourrais m'aider, je bloque,

J'ai un résultat mais pas toujours pertinent et je ne trouve pas l'erreur ...

Lorsque je n'effectue pas le filtre ça fonctionne sur la colonne global,

et lorsque j'effectue le filtre j'ai l'impression qu'il me calcul le nombre de ligne filtré ....

Private Sub CommandButton2_Click()

' Création d'un fitre par rapport à un néméro de commande
'--------------------------------------------------------

    With ThisWorkbook
    With .Worksheets("Feuil1")
        'Suppression des filtres automatique
        AutoFilterMode = False
        'On fait un filtre automatique sur la colonne des OF
        Range("B:B").AutoFilter field:=1, Criteria1:=Range("j1")
    End With
    End With

' Calcul du coéficient par rapport au nombre d'NB_Option différente
'---------------------------------------------------------------

    Dim N As Long
    Dim Compteur As Long
    Dim Ligne As String
    Dim Valeur As String
    Dim NB_Option As Long
    Dim ValeursUniques() As String

    With ThisWorkbook
    With .Worksheets("Feuil1")
    'initialisation
    N = 0
    Compteur = 0
    Ligne = ""
    Valeur = ""
    NB_Option = 0

    DernLigne = .Cells(.Rows.Count, "A").End(xlUp).Row

    N = Range("C2:C" & DernLigne).SpecialCells(xlCellTypeVisible).Count
    ReDim ValeursUniques(0 To N)

    'Calcul du nombre d'NB_Option différente par rapport au filtre
    If (N > 0) Then
        For Compteur = 1 To N
            Valeur = CStr(Range("C2:C" & DernLigne).SpecialCells(xlCellTypeVisible).Cells(Compteur).Value)
                If Valeur <> "" Then
                    If (Not (InStr(1, Ligne, Valeur, vbBinaryCompare) > 0)) Then
                        Ligne = Ligne & ("[" & Valeur & "]")
                        NB_Option = NB_Option + 1
                        ValeursUniques(NB_Option) = Valeur
                    Else
                    End If
                Else
                End If
        Next Compteur
    End If

    'résultat
    ValeursUniquesDansPlage = NB_Option
    MsgBox (ValeursUniquesDansPlage)

    End With
    End With

'Suppression du filtre
'---------------------

    With ThisWorkbook
    With .Worksheets("Feuil1")
        'Suppression des filtres automatique
        AutoFilterMode = False
    End With
    End With

End Sub

Merci d'avance pour votre aide et votre temps

Ajunata

Bonjour,

Une proposition Excel 365 (nouvelles fonctions) sans VBA.

A tester et à adapter.

Cdlt.

16test.xlsm (32.75 Ko)

Bonjour Jean-Eric,

Je n'ai pas le choix que de passer par le VBA, par rapport à mon application complète ...

Merci tout de même pour cette réponse qui peut être intéressante pour le futur !!

Rechercher des sujets similaires à "nombre differentes colonne suite filtre vba"