XL 2019 Plusieurs Worksheet_Change sur la même feuille

  • Initiateur de la discussion Initiateur de la discussion Rabeto
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Rabeto

XLDnaute Occasionnel
Bonjour à tous,

Quelqu'un a une solution svp

J'aimerai fusionner ces 2 macros qui font des filtres automatique selon la valeur d'une cellule sur la même feuille svp
Est ce possible également d'enlever le filtre avant le lancement de chaque macro ?

-------------------------------------------------------
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, [A1]) Is Nothing Then
Range("A15:A" & Cells(Rows.Count, "A").End(xlUp).Row).AutoFilter 1, [A1]
End If
End Sub
-------------------------------------------------------
Private Sub Worksheet_Change(ByVal X As Range)
If Not Intersect(X, [B1]) Is Nothing Then
Range("B15:B" & Cells(Rows.Count, "B").End(xlUp).Row).AutoFilter 1, [B1]
End If
End Sub
-------------------------------------------------------

PS : j'ai trouvé des sujets similaires sur le forum mais je n'arrive pas à adapter mon code avec les solutions proposées.
 

Pièces jointes

Solution
Bonjour à tous,
VB:
Private Sub Worksheet_Change(ByVal T As Range)
With Range("A15:B" & Cells.SpecialCells(xlCellTypeLastCell).Row)
    If .Row < 15 Then Exit Sub
    If Not Intersect(T, [A1:B1]) Is Nothing Then .AutoFilter: .AutoFilter 'ôte le filtre
    If Not Intersect(T, [A1]) Is Nothing Then .AutoFilter 1, [A1]
    If Not Intersect(T, [B1]) Is Nothing Then .AutoFilter 2, [B1]
End With
End Sub
A+
Bonjour
compile tout dans un seul event dans un select case true
VB:
Private Sub Worksheet_Change(ByVal T As Range)
     If ActiveSheet.AutoFilterMode Then
       ActiveSheet.AutoFilterMode = False
     End If
    Select Case True
    Case Not Intersect(T, [A1]) Is Nothing
        Range("A15:A" & Cells(Rows.Count, "A").End(xlUp).Row).AutoFilter 1, [A1]

    Case Not Intersect(X, [B1]) Is Nothing
        Range("B15:B" & Cells(Rows.Count, "B").End(xlUp).Row).AutoFilter 1, [B1]

        'case blablabla
        'etc..etc..
    End Select

End Sub
 
Bonjour
Est ce seulement A1 et B1 qui change ou une cellule de la colonne...
Ci joint ma solution pour A1 ou B1
VB:
Private Sub Worksheet_Change(ByVal T As Range)
  T.AutoFilter
  If T.Address = "$A$1" Then
    Range("A15:A" & Cells(Rows.Count, "A").End(xlUp).Row).AutoFilter 1, [A1]
  ElseIf T.Address = "$B$1" Then
    Range("B15:B" & Cells(Rows.Count, "B").End(xlUp).Row).AutoFilter 1, [B1]
  End If
End Sub
A+ François
 
re
effectivement @fanfan38 a raison ,si c'est simplement A1 ou B1 on peut simplifier
VB:
Private Sub Worksheet_Change(ByVal T As Range)
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False

    Select Case T.Address(0, 0)

    Case "A1": Range("A15:A" & Cells(Rows.Count, "A").End(xlUp).Row).AutoFilter 1, [A1]

    Case "B1": Range("B15:B" & Cells(Rows.Count, "B").End(xlUp).Row).AutoFilter 1, [B1]

    End Select

End Sub
 
Bonjour à tous,
VB:
Private Sub Worksheet_Change(ByVal T As Range)
With Range("A15:B" & Cells.SpecialCells(xlCellTypeLastCell).Row)
    If .Row < 15 Then Exit Sub
    If Not Intersect(T, [A1:B1]) Is Nothing Then .AutoFilter: .AutoFilter 'ôte le filtre
    If Not Intersect(T, [A1]) Is Nothing Then .AutoFilter 1, [A1]
    If Not Intersect(T, [B1]) Is Nothing Then .AutoFilter 2, [B1]
End With
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
234
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
229
Réponses
4
Affichages
355
Retour