Filtre des donnés Excel suivant des conditions

Bonjour,

J'ai besoin d'aide pour faire VBA de filtre de donnée.

Les conditions du filtre son dans la feuille filtre les donnée à filtré sont dans la feuille Mouvement.
Même si, l'un des condition des filtre son rempli on peut valider.
Ci joint le fichier.

Merci d'avance!

Bonjour et bienvenue

Pensez à faire une petite présentation de vous ICI

Si vous ne l'avez pas encore fait, je vous invite déjà à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)


Pour votre demande, la sélection du mois dans la feuille Filtre ne me parait pas servir à partir du moment où vous mettez une date en E9 et que le mois sera mentionné par calcul dans la feuille Mouvement. Exact ?
A quoi sert la cellule G9 ?

Bonjour Dan,

Merci pour votre réponse.

La date en E9 est la date du début du filtre et la date en G9 est la date fin du filtre.

Exemple: 01/01/2023 en E9 et 18/01/2023 en G9

re

La date en E9 est la date du début du filtre et la date en G9 est la date fin du filtre.

Afin de bien comprendre, vous voulez filtrer la feuille Mouvement sur base des données de date ou de mois ou de ref placées dans la feuille filtre ?

Si oui, pourquoi ne pas utiliser les filtres dont vous disposez en entete de votre tableau de la feuille Mouvement plutôt que de faire un code ?
Plus simple non ?

Cordialement

Bonjour,

J'ai fait un peut de recherche et j'ai compilé un code mais il y en a des erreurs que je ne suis pas.

Pouviez vous m'aider svp? Merci d'avance.

Mouvement.Range("A7:I7").AutoFilter _
Field:=1, _
Criteria1:=Range ("E9"). Value in filtre, _
Operator:=xlAnd, _
Criteria2:=Range ("G9"). Value in filtre

And Mouvement.Range("A7:I7").AutoFilter _
Field:=1, _
Criteria1:=Range ("E11"). Value in filtre

And and Mouvement.Range("A7:I7").AutoFilter _
Field:=1, _
Criteria1:=Range ("E13"). Value in filtre

Bonjour

Lorsque vous postez un code, veillez à utiliser les balises de codes comme expliqué ici --> https://forum.excel-pratique.com/s/goto/1117441

Pour votre filtre, est-ce que toutes les rubriques devront être remplies dans votre feuille filtre ou comptez-vous pouvoir faire un choix dans une des rubriques

Le choix 2 étant nettement plus compliqué à mettre en place bien entendu

Re,

les rubriques devront être remplies dans le feuille filtre.

les rubriques devront être remplies dans le feuille filtre.

Vous n'avez pas compris ma question je pense. Soit vous devez remplir toutes les rubriques soit vous pouvez les remplir partiellement.

Mais bon, essayez avec ce code :

Sub Filtrage()
Dim i As Byte
Dim debut As String, fin As String, mois As String, element As String

With Sheets("Filtre")
    debut = Format(.Range("E9").Value, "\>\=mm/dd/yyyy")
    fin = Format(.Range("G9").Value, "\<\=mm/dd/yyyy")
    mois = .Range("E11").Value
    element = .Range("E13").Value
End With

If debut <> vbNullString Then jour = debut: i = 1
If fin <> vbNullString Then jour = fin: i = 1
If debut <> vbNullString And fin <> vbNullString Then i = 2

With Sheets("Mouvement").ListObjects(1)
    .AutoFilter.ShowAllData

    Select Case i
        Case Is = 1
            .Range.AutoFilter Field:=1, Criteria1:=Array(1, jour)
        Case Is = 1
            .Range.AutoFilter Field:=1, Operator:=xlAnd, Criteria1:=debut, Criteria2:=fin
    End Select
    If element <> vbNullString Then .Range.AutoFilter Field:=2, Criteria1:=element
    If mois <> vbNullString Then .Range.AutoFilter Field:=9, Criteria1:=mois
End With
End Sub

Reste peut-être à voir pour votre liste de validation en E11 pour laquelle il faudrait peut-être éviter les doublons.

Si ok -->

Cordialement

Merci bcp

Sub Ellipse_Cliquer()
Dim i As Byte
Dim debut As String, fin As String, mois As String, element As String

With Sheets("Filtre")
    debut = Format(.Range("E9").Value, "\>\=mm/dd/yyyy")
    fin = Format(.Range("G9").Value, "\<\=mm/dd/yyyy")
    mois = .Range("E11").Value
    element = .Range("E13").Value
End With

'valeur null
If debut <> vbNullString Then jour = debut: i = 1
If fin <> vbNullString Then jour = fin: i = 1
If debut <> vbNullString And fin <> vbNullString Then i = 2

With Sheets("Mouvement").ListObjects(1)
    .AutoFilter.ShowAllData

    Select Case i
        Case Is = 1
            .Range.AutoFilter field:=1, Criteria1:=Array(1, jour)
        Case Is = 1
            .Range.AutoFilter field:=3, Operator:=xlAnd, Criteria1:=debut, Criteria2:=fin
    End Select
    'filtre date
    If debut <> vbNullString Then .Range.AutoFilter field:=1, Criteria1:=debut, Operator:=xlAnd, Criteria2:=fin
    'filtre element
    If element <> vbNullString Then .Range.AutoFilter field:=2, Criteria1:=element
    'filtre mois
    If mois <> vbNullString Then .Range.AutoFilter field:=9, Criteria1:=mois
End With

End Sub
Rechercher des sujets similaires à "filtre donnes suivant conditions"