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
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.
 

Discussions similaires