XL 2016 problème de filtre

jean marc1234

XLDnaute Occasionnel
Re
@jean marc1234
Non quand tu lis ceci
@jean marc1234
texte texte texte
Cela veut dire que je m'adresse à toi

Et donc en régle générale, sur le forum:
@pseudo d'un xldnaute veut dire que le texte qui suit le concerne

Donc dans mon précédent message, il y avait une partie du message qui te concernait et l'autre qui concernait youky(BJ)

Pour revenir à la question , tout à l'heure, je parlais de simplicifation
Donc si tu cherches à filtrer par année, on peut modifier ainsi
1) Le critère du filtre change (la formule en K2 sur la feuille filtre) devient
=ANNEE(source2!$C2)=ANNEE(filtre!$D$7)
NB: La cellule K1 doit alors absolument être vide

2) La macro doit être ainsi modifiée
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim p As Range, crit As Range
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("C7:E7")) Is Nothing Then Exit Sub
If Not IsDate([C7]) And Not IsDate([D7]) Then Exit Sub
If [E7] = "" Then Exit Sub
[B11:E1000].ClearContents
Set p = Range("filtre!$B$10:$E$10")
Set crit = Feuil3.Range("filtre!$K$1:$L$2")
Sheets("source2").Range("TableauSource[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=crit, CopyToRange:=p, Unique:=False
End Sub
Ensuite, il suffit juste de saisir une date en D7 pour que les données soient filtrées sur l'année de la date en D7.

(test OK sur le fichier fourni par youki(BJ))
k1 doit etre absolument vide? Sa ne serait pas k2 plutôt?
 

Staple1600

XLDnaute Barbatruc
Re

@jean marc1234
Mes indications sont justes... :rolleyes:
(puisque j'avais écris : Test OK)
K1 doit bien être vide
(comme je l'ai écrit et souligné)

Relis les instructions et suis-les simplement ;)
 

Staple1600

XLDnaute Barbatruc
Re

@jean marc1234
Oui, quand on suit les instructions données, cela fonctionne ;)

Si tu saisis par exemple en D7: 01/01/2020
Eh bien, le filtre affichera les données qui ont une échéance en 2020.

PS: Tu te rappelles que cette modif a pour but de faire ceci: filtrer sur une année donnée
Re
Pour revenir à la question , tout à l'heure, je parlais de simplicifation
Donc si tu cherches à filtrer par année, on peut modifier ainsi
1) Le critère du filtre change (la formule en K2 sur la feuille filtre) devient
=ANNEE(source2!$C2)=ANNEE(filtre!$D$7)
NB: La cellule K1 doit alors absolument être vide
(test OK sur le fichier fourni par youki(BJ))
 

jean marc1234

XLDnaute Occasionnel
Re

@jean marc1234
Oui, quand on suit les instructions données, cela fonctionne ;)

Si tu saisis par exemple en D7: 01/01/2020
Eh bien, le filtre affichera les données qui ont une échéance en 2020.

PS: Tu te rappelles que cette modif a pour but de faire ceci: filtrer sur une année donnée
oui, nickel sa fonctionne
petite question: c6,c7 et j1,j2 sur la page filtre peuvent etre supprimer?
 

Staple1600

XLDnaute Barbatruc
Re,

@jean marc1234
Alors une petite variante de la macro précédente pour ce faire
(remplace le code existant dans la feuille filtre par le code ci-dessous)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim p As Range, crit As Range
If Target.Count > 1 Then Exit Sub
If [E7] = "" Then Exit Sub
[B11:E1000].ClearContents
Set p = Range("filtre!$B$10:$E$10")
Set crit = Feuil3.Range("filtre!$K$1:$L$2")
Sheets("source2").Range("TableauSource[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=crit, CopyToRange:=p, Unique:=False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim v_AN, X
If Target.Address = "$D$7" Then
v_AN = InputBox("Choix de l'année de l'échéance ?", "Filtrage Echéance", Year(Date))
X = CDate("1/1/" & v_AN)
If Not IsDate(X) Then Exit Sub
[D7] = X
End If
End Sub
Et formate la cellule D7 avec ce format : aaaa

Pour tester, sélectionne la cellule D7 avec ta souris.
 

jean marc1234

XLDnaute Occasionnel
Re,

@jean marc1234
Alors une petite variante de la macro précédente pour ce faire
(remplace le code existant dans la feuille filtre par le code ci-dessous)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim p As Range, crit As Range
If Target.Count > 1 Then Exit Sub
If [E7] = "" Then Exit Sub
[B11:E1000].ClearContents
Set p = Range("filtre!$B$10:$E$10")
Set crit = Feuil3.Range("filtre!$K$1:$L$2")
Sheets("source2").Range("TableauSource[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=crit, CopyToRange:=p, Unique:=False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim v_AN, X
If Target.Address = "$D$7" Then
v_AN = InputBox("Choix de l'année de l'échéance ?", "Filtrage Echéance", Year(Date))
X = CDate("1/1/" & v_AN)
If Not IsDate(X) Then Exit Sub
[D7] = X
End If
End Sub
Et formate la cellule D7 avec ce format : aaaa

Pour tester, sélectionne la cellule D7 avec ta souris.
ha ben super sa.
Merci beaucoup sa fonctionne nickel et du coup encore plus simple.
Vraiment merci
 

jean marc1234

XLDnaute Occasionnel
bonjour à tous,
merci encore à vous tous pour le bon coup de main sur mon projet.
La sa fonctionne nickel.Donc je vais pourvoir continuer.
Je doit maintenant refaire la même chose pour quatre autres secteur d'activités.
Alors j'ai la possibilité de reproduire la feuille source et la feuille filtre. Ce qui va faire 8 feuille en plus.
Il y aurait t'il à votre avis un moyen de simplifié la chose.
 

jean marc1234

XLDnaute Occasionnel
Bonsoir le fil, le forum

@jean marc1234



Un tel moyen te fut proposé dès le message#2 par djidji59430 ;)

Mais tu n'as pas approfondi la chose...
Et pourtant c'est vraiment simple et puissant
Bonsoir le fil, le forum

@jean marc1234



Un tel moyen te fut proposé dès le message#2 par djidji59430 ;)

Mais tu n'as pas approfondi la chose...
Et pourtant c'est vraiment simple et puissant
bonjour staple,
oui j'avais effectivement pour les TCD.
Je m'en sert déjà sur certains classeur pour analyser des données.
Mais la je voulais essayer une autre méthode.
Maintenant si je n'ai pas le choix je ferais bien sur avec.
 

Staple1600

XLDnaute Barbatruc
Re

@jean marc1234
C'est toi qui a demandé un moyen plus simple ;)
Le plus simple c'est toujours de privilégier les fonctions natives offertes par Excel tel que le TCD avant d'envisager VBA.
 

Staple1600

XLDnaute Barbatruc
Re

@jean marc1234
Puisque tu parles de 8 feuilles, recréé un fichier exemple plus complet
(et cette fois sans aucune données confidentielles ;))

Suggestion au passage
Comme ce fil commence à être long au niveau nombre de pages, ce serait peut-être plus facile (et fluide) de créer un nouveau fil, non ?
 

Discussions similaires


Haut Bas