XL 2010 VBA FILTRE SUR VALEUR DANS CELLULES FUSIONNEES

chris6999

XLDnaute Impliqué
Bonjour

Je tente de faire un filtre sur une valeur saisie dans une plage fusionnée.

Mon code fonctionne si la valeur n'est pas nulle mais lorsque je supprime cette valeur la suppression du filtre ne réagit pas.
Cela vient du fait que la zone de référence est sur une plage fusionnée car quand j'enlève la fusion le code réagit.
Auriez-vous une solution de contournement ?

Merci par avance pour votre aide
Bonne journée à tous


Private Sub Worksheet_Change(ByVal Target As Range)
'filtre produit fini accessoire
If Target.Address(0, 0) = "K4" Then
If Target.Value = "" Then
Range("$B$11:$P$11").AutoFilter Field:=15
End If

If Target.Value <> "" Then
Range("$B$11:$P$11").AutoFilter Field:=15, Criteria1:="=*" & Target.Value & "*"
End If
End If
End Sub
 

Pièces jointes

  • TEST FILTRE.xlsm
    559.7 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Bonjour

Avec ce code à la place du tien, cela semble fonctionner, non ?
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("K4") <> vbNullString Then
        Me.AutoFilterMode = False
        With Range("$B$11:$P$11")
        .AutoFilter
        .AutoFilter Field:=15, Criteria1:=Range("K4").Text
        End With
    Else
        Range("$B$11:$P$11").AutoFilter
    End If
End Sub

PS: Suggestion au passage: évite les titres tout en majuscules (cela agresse l'oeil et cela équivaut à "gueuler"* sur un forum.
*: c'est pas moi qui le dit ;)
 

job75

XLDnaute Barbatruc
Bonjour chris6999, JM,

On peut aussi utiliser le filtre avancé :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [K4]) Is Nothing Then Exit Sub
If [K4] = "" Then If FilterMode Then ShowAllData: Exit Sub
[K3] = [P11]
[B11].CurrentRegion.AdvancedFilter xlFilterInPlace, [K3:K4]
End Sub
 

Pièces jointes

  • TEST FILTRE(1).xlsm
    544.6 KB · Affichages: 3

Discussions similaires