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
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 SubReste peut-être à voir pour votre liste de validation en E11 pour laquelle il faudrait peut-être éviter les doublons.
Si ok -->
Cordialement
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