Nombre de cellules différentes dans une colonne suite à un filtre VBA
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.
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 !!