Filtre VBA sur une plage de données

Bonjour,

j'essaye d'obtenir un filtre automatisé sur une plage de données de la cellule. je m'explique

j'ai comme tableau le fichier ci-joint :par exemple , je voudrais obtenir pour la plage A4 à A7 ( avant la case vide) un filtre des données.

j'ai essayée avec :

ou nb et le nombre de case non vide à la suite pour chaque bloc.

Range(Cells(X, 1), Cells(X + Nb, 1)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range(Cells(X, 2), Cells(X + Nb, 2)), Unique:=True

mais cela me donne rien si vous avez une idée ou un lien qui pourrait m'aider j'ai beau chercher je n'ai rien trouvé qui fonctionne.

merci d'avance !

68exemple.xlsx (8.81 Ko)

Bonjour,

Sub Test()
    Dim n%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("X1") = .Range("A2"): .Range("X2") = "*"
        .Range("A2:A" & n).AdvancedFilter xlFilterCopy, .Range("X1:X2"), .Range("B2"), True
        .Range("X1:X2").ClearContents
    End With
End Sub

NB- On constitue une zone temporaire de critères, de façon à éliminer les éléments vides du filtrage (on supprime cette zone après filtrage).

NB2- Ton propos laisse éventuellement entendre que tu voudrais filtrer fragment par fragment (fragments séparés par des lignes vides). Or le filtre avancé exige une en-tête de champ...

Cordialement.

c'est ce que je souhaitais faire faire un filtre pour chaque bloc et pour les differenciés j'ai rajouter la ligne vide.

j'ai pensé à une possible méthode de comparaison sauf que quand les cellules sont différentes cela ne fonctionne pas!

merci tout de meme !

Essaie ceci :

Sub Test()
    Dim nd%, nf%
    With ActiveSheet
        nd = 2
        Do While .Cells(nd + 1, 1) <> ""
            .Cells(nd, 1) = .Range("A2")
            nf = .Cells(nd, 1).End(xlDown).Row
            .Range(.Cells(nd, 1), .Cells(nf, 1)).AdvancedFilter xlFilterCopy, , _
             .Cells(nd, 2), True
            .Cells(nd, 2).ClearContents: If nd > 2 Then .Cells(nd, 1).ClearContents
            nd = nf + 1
        Loop
    End With
End Sub

MERCI beaucoup c'est exactement ce que je voulais! ca marche parfaitement

Rechercher des sujets similaires à "filtre vba plage donnees"