XL 2016 problème de filtre

jean marc1234

XLDnaute Occasionnel
bonjour tous le monde,
je revient vers vous pour un problème de filtrage de données.
J'ai une page dans mon classeur qui devrais me servir à filtre des données d'un tableau se trouvant sur une autre feuille du même classeur.
Mon problème est que mon filtre ne marche pas.
J'ai vérifier pas de ligne vide dans mon tableau source, écriture exact des champs de critères.
Le pire c'est que je l'ai déjà fait sur un autre classeur et que cela fonctionne très bien.
Je comprend pas pourquoi, donc si quelqu'un pouvait me donner un ptit coup de main.
Merci d'avance.
 

jean marc1234

XLDnaute Occasionnel
Bonjour,

As tu essayé avec un TCD ?
bonjour djidjji59430,déjà merci de t'avoir penché sur mon problème.
Non je n'avais pas essayé, a vrais dire pas ce que je souhaite.
Ce que je souhaiterais c'est que sa me ressorte suivant les critères choisit les lignes comme dans le tableau source. Donc avec nom, date de validité, échéance et niveau d'habilitation.
J'ai dans le réel une grande liste de nom.
Merci encore
 

jean marc1234

XLDnaute Occasionnel
Bonjour à tous,
Voici avec macro sans filtre mais une boucle qui teste et mets les données.
Cela est actualisé dès le changement des valeurs.
Bruno
bonjour bruno, merci pour votre intervention.
Mais désolé sa ne fonctionne pas correctement.
Si par exemple je veut sélectionner du 01/01/2017 au 31/12/2017 ou une autre année cela ne me ressort rien.
J'ai besoin de savoir entre deux dates qui a aura son habilitation à repasser.
Merci encore une fois.
 

youky(BJ)

XLDnaute Barbatruc
Bon,
La macro prends >=Validation et <=Echéance
Il n'y a pas d'Echéance avant 31/12/2017 normal qu'elle trouve rien.
Revois tes critères . . . .
Je propose Echéance > que la date du jour
Dans ce code qui est facilement modifiable selon le besoin des critères
C'est cette ligne à revoir
If .Cells(lg, 2) >= [C7] And .Cells(lg, 3) >= Date And .Cells(lg, 4) = [E7] Then
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Range(Target.Address), Range("C7:E7")) Is Nothing Then Exit Sub
If Not IsDate([C7]) Then Exit Sub
If Not IsDate([D7]) Then Exit Sub
If [E7] = "" Then Exit Sub
[B11:E1000].ClearContents
lig = 11
With Feuil4
For lg = 2 To .[A65000].End(3).Row
'If .Cells(lg, 2) >= [C7] And .Cells(lg, 3) <= [D7] And .Cells(lg, 4) = [E7] Then
If .Cells(lg, 2) >= [C7] And .Cells(lg, 3) >= Date And .Cells(lg, 4) = [E7] Then
Range("B" & lig & ":E" & lig).Value = .Range("A" & lg & ":D" & lig).Value
lig = lig + 1
End If
Next
End With
End Sub
 

jean marc1234

XLDnaute Occasionnel
Bon,
La macro prends >=Validation et <=Echéance
Il n'y a pas d'Echéance avant 31/12/2017 normal qu'elle trouve rien.
Revois tes critères . . . .
Je propose Echéance > que la date du jour
Dans ce code qui est facilement modifiable selon le besoin des critères
C'est cette ligne à revoir
If .Cells(lg, 2) >= [C7] And .Cells(lg, 3) >= Date And .Cells(lg, 4) = [E7] Then
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Range(Target.Address), Range("C7:E7")) Is Nothing Then Exit Sub
If Not IsDate([C7]) Then Exit Sub
If Not IsDate([D7]) Then Exit Sub
If [E7] = "" Then Exit Sub
[B11:E1000].ClearContents
lig = 11
With Feuil4
For lg = 2 To .[A65000].End(3).Row
'If .Cells(lg, 2) >= [C7] And .Cells(lg, 3) <= [D7] And .Cells(lg, 4) = [E7] Then
If .Cells(lg, 2) >= [C7] And .Cells(lg, 3) >= Date And .Cells(lg, 4) = [E7] Then
Range("B" & lig & ":E" & lig).Value = .Range("A" & lg & ":D" & lig).Value
lig = lig + 1
End If
Next
End With
End Sub
re bonjour,
alors je viens d'essayer de faire ressortir un un enregistrement à échéance en 2021.
En rentrant
Validé -le Échéance -le Niveau
01/01/2021 -31/12/2021 -B2V ESSAI BR BC HOV
il devrait me sortir le résultat suivant:
marchand guillaume 06/04/2018 06/04/2021 B2V ESSAI BR BC HOV
Raymond bryan 18/04/2018 18/04/2021 B2V ESSAI BR BC HOV
même en modifiant la ligne de code cela ne fonctionne pas.
J'ai bien compris le code pourtant je pense.
Si tu pouvais me dire si chez toi lors de cette sélection sa ressort bien le résultat escompter.
Merci d'avance
 

jean marc1234

XLDnaute Occasionnel
Voici la ligne incriminée rectifiée
If .Cells(lg, 3) >= [C7] And .Cells(lg, 3) <= [D7] And .Cells(lg, 4) = [E7] Then
Ca doit le faire
Bruno
re,
super, la sa à l'air de fonctionné correctement, merci beaucoup
j'ai encore une petite question. Peut tu m(indiquer pourquoi lorsque je lance l'ouverture de mon classeur un autre classeur vierge s'ouvre systématiquement?
 

youky(BJ)

XLDnaute Barbatruc
Tu dois avoir un lien qui a été créé cela se fait souvent en faisant les copiés-collé
Vérifier en 1er les boutons ou dessins.... si liens supprimer
Sur une copie supprimer un onglet et voir à l'ouverture si toujours lien pour trouver le bon onglet
refaire jusqu’à plus de lien
Bruno
 

jean marc1234

XLDnaute Occasionnel
Tu dois avoir un lien qui a été créé cela se fait souvent en faisant les copiés-collé
Vérifier en 1er les boutons ou dessins.... si liens supprimer
Sur une copie supprimer un onglet et voir à l'ouverture si toujours lien pour trouver le bon onglet
refaire jusqu’à plus de lien
Bruno
ok , je regarde cela.
merci à toi
 

jean marc1234

XLDnaute Occasionnel
Voici la ligne incriminée rectifiée
If .Cells(lg, 3) >= [C7] And .Cells(lg, 3) <= [D7] And .Cells(lg, 4) = [E7] Then
Ca doit le faire
Bruno
bonjour bruno,
je crois que hier j'ai parler trop vite.
Quand je rajoute des personnes dans ma source le trie ne se fait pas correctement.
Non seulement sur les date mais également sur les années.
J'ai chercher mais je vois pas pourquoi.
De plus sa aliment systématiquement ma zone de liste. Ce que je ne souhaite pas. Je veux pourvoir rester avec les deux choix possibles.
Je redemande donc un coup de main.
Merc d'avance.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum, jean marc1234

@jean marc1234
Tu as zappé mon précédent message ou tu ne l'as pas compris ?
(voir le message#11)

PS: Dans les deux cas, cela ne t’empêche pas de me saluer ;)
 

Staple1600

XLDnaute Barbatruc
Re

@jean marc1234
Oui j'avais noté que c'était ton adresse mail*
(Mais tu as bien lu ce que dit DavidXLD (webmaster du site) en cliquant sur le lien que j'avais mis dans le message#11 ?)

Donc l'idéal, autant que possible si toutes les données sont fictives dans les fichiers joint sur le forum, alors plus de casse-tête pour David. ;)

PS: *: Et cela ne dérange pas qu'elle se promène sur le net ?
Tu ne crains pas les spams ?

EDITION: Bonjour Youky(BJ)
 
Dernière édition:

youky(BJ)

XLDnaute Barbatruc
Salut bien,
Dans l'onglet Source1!E2 remplace le zéro par un O
BR B1V HOV tu as mis BR B1V H0V
Attention à tout cela car une macro ne fait pas de cadeau.
Bon dimanche
 

jean marc1234

XLDnaute Occasionnel
Salut bien,
Dans l'onglet Source1!E2 remplace le zéro par un O
BR B1V HOV tu as mis BR B1V H0V
Attention à tout cela car une macro ne fait pas de cadeau.
Bon dimanche
Re bonjour à toi,
j'ai rectifier tous cela et j'ai même repris ma liste et repasser tous les enregistrements pour vérifier.
et j'ai également fait un copier collé pour etre sur de la même écriture.
Mais toujours Même problème.
 

Staple1600

XLDnaute Barbatruc
Re

Une autre possibilité pour filtrer (en utilisant le filtre élaboré)
(apparemment test OK)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig&
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
Dim p As Range, crit As Range
Set p = Range("filtre!$B$10:$E$10")
Set crit = Feuil4.Range("source2!$F$1:$H$2")
Sheets("source2").Range("TableauSource[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=crit, CopyToRange:=p, Unique:=False
End Sub
 

jean marc1234

XLDnaute Occasionnel
Re

Une autre possibilité pour filtrer (en utilisant le filtre élaboré)
(apparemment test OK)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig&
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
Dim p As Range, crit As Range
Set p = Range("filtre!$B$10:$E$10")
Set crit = Feuil4.Range("source2!$F$1:$H$2")
Sheets("source2").Range("TableauSource[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=crit, CopyToRange:=p, Unique:=False
End Sub
re bonjour,
merci de te pencher sur mon classeur.
Mais sa fonctionne pas non plus. Je commence à penser que mon ordit a un problème la.
Maintenant sa me ressort la liste complète.
J'ai essayer en mettent le code dans l'onglé filtre et visualise le code.
Et fait un autre essai en créant un nouveau module.
Haaaaaaaaaaa!!! doit pas etre doué dans ce domaine de trie.
ci-joint mon classeur avec aucune données perso normalement.
 

Fichiers joints

Dernière édition:

Discussions similaires


Haut Bas