VBA - Macro avec filtre automatique

Bonjour tout le monde,

Voilà je rencontre un problème VBA, j'aimerai pouvoir en fonction du nom choisi dans la liste déroulante de la cellule A3 de l'onglet Liste_déroulante, pouvoir filtrer la colonne A de l'onglet Tableau en fonction de ce nom, voir ci-dessous le bout de code :

Sub Test()

'

' Test Macro

'

Range("A3").Select

Selection.Copy

Sheets("Tableau").Select

ActiveSheet.Range("$A$2:$A$20").AutoFilter Field:=1, Criteria1:="Michel"

End Sub

Mon problème est que la macro garde le premier nom choisi, qu'elle serait le bout de code pour que le nom change en fonction du choix dans la liste déroulante ?

D'avance merci pour votre aide

Ps : Je joins mon fichier ce sera peut-être plus clair

22test.xlsm (15.17 Ko)

Re,

J'ai trouvé le bout de code qu'il me manquait en testant un peu ¨

Sheets("Formulaire").Range("I5")

Il fallait tout simplement mettre le nom de ma feuille et la cellule au niveau du critère en remplacement du nom de la personne

Merci tout de même

Bonjour Rémi, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle Change ci-dessous.

Modifie un prénom dans A3 et...

Le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OL As Worksheet 'déclare la variable OL (Onglet Liste_deroulante)
Dim OT As Worksheet 'déclare la variable OL (Tableau)

If Target.Address <> "$A$3" Then Exit Sub 'si le changement a lieu ailleurs qu'en A3, sort de la procédure
Set OL = Worksheets("Liste_deroulante") 'définit l'onglet OL
Set OT = Worksheets("Tableau") 'définit l'onglet OT
'si A3 est effacée annule le filtre. sort de la procédure
If Target.Value = "" Then OT.Range("A2").CurrentRegion.AutoFilter: Exit Sub
'filtre la plage avec la valeur de A3 commre critère
OT.Range("A2").CurrentRegion.AutoFilter Field:=1, Criteria1:=Target.Value
OT.Activate 'active l'onglet OT
End Sub

Le fichier :

22remi-ep-v01.xlsm (16.60 Ko)

Bonjour,

Une autre proposition à étudier.

Cdlt.

25remilanaud.xlsm (17.88 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$3" Then
        With Worksheets("Tableau")
            If .FilterMode Then .ShowAllData
            If Not IsEmpty(Target.Value) Then
                .Cells(2, 1).CurrentRegion.AutoFilter Field:=1, Criteria1:=Target.Value
            End If
            .Activate
        End With
    End If
End Sub

Bonjour Thau Thème,

Merci pour le code et le fichier , j'ai essayé en ajoutant deux champs en plus que j'aimerai sélectionnés également.

J'ai modifié un peu ton code mais cela ne fonctionne pas ....

Comment puis-je dire que je veux que mes 3 champs A3, B3, C3 doivent être renseigné pour éxecution de la macro ?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim OL As Worksheet 'déclare la variable OL (Onglet Liste_deroulante)

Dim OT As Worksheet 'déclare la variable OL (Tableau)

If Target.Address <> "$A$3" And "$B$3" And "$C$3" Then Exit Sub 'si le changement a lieu ailleurs qu'en A3, sort de la procédure

Set OL = Worksheets("Liste_deroulante") 'définit l'onglet OL

Set OT = Worksheets("Tableau") 'définit l'onglet OT

'si A3 est effacée annule le filtre. sort de la procédure

If Target.Value = "" Then OT.Range("A2", "B2", "C2").CurrentRegion.AutoFilter: Exit Sub

'filtre la plage avec la valeur de A3 commre critère

OT.Range("A2", "B2", "C2").CurrentRegion.AutoFilter Field:=1, Criteria1:=Target.Value

OT.Activate 'active l'onglet OT

End Sub

Je suis désolé je n'ai pas réussi à tout comprendre même si tu m'as mis des indications à côté

Je te joins aussi le fichier modifié

Merci pour ton aide en tous cas

Bonjour,

Une réponse ?

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
    If Not Intersect(Target, Me.Range("A3:C3")) Is Nothing And Target.CountLarge = 1 Then
        Set ws = Worksheets("Tableau")
        If ws.FilterMode Then ws.ShowAllData
        If WorksheetFunction.CountA(Me.Range("A3:C3")) = 3 Then
            With ws
                .Cells(2, 1).CurrentRegion.AutoFilter Field:=1, Criteria1:=Target.Value
                .Activate
            End With
        End If
    End If
End Sub

Bonjour Jean-Eric,

Il est top ton code par contre il ne sélectionne que le filtre nom dans l'onglet Tableau hors il faudrait qu'en fonction des critères des cellules de l'onglet Liste_déroulante les filtres s'activent dans l'onglet Tableau.

Je sais pas si c'est clair comme j'explique le sujet

En tous cas merci de m'aider un peu, je ne comprends pas grand choses sur le code vba pour le moment...

Rechercher des sujets similaires à "vba macro filtre automatique"