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.
 

youky(BJ)

XLDnaute Barbatruc
je viens de rectifier ton dernier fichier, tu avais effacé une lettre dans la macro lig qui passait lg ou l'inverse.
cela décalait tout.
J'ai renommé ce fichier
La solution de Staple me plait et doit fonctionner si tu fais ce qu'il dit.
Je le salut bien au passage
Hello Jacky
Bruno
 

Pièces jointes

  • byYOUKY.xlsm
    66.8 KB · Affichages: 16

Staple1600

XLDnaute Barbatruc
Re


Comme j'ai cogité le truc, je le poste ;)
Donc sur la feuille source2
En E2: =SIERREUR(INDEX(TableauSource[Niveau];EQUIV(0;INDEX(NB.SI($E$1:E1;TableauSource[Niveau]););0));"")
(à récopier vers le bas)

Ensuite sur la feuille filtre (en cellule E2), pour Données/Validation, dans Source:, on mettra la formule suivante
=DECALER(source2!$E$2;;;NB.SI($E$2:$E$20;"?*"))


PS: Je suis basé sur ton classeur youky(Bj), celui du post#4 en guise de fichier exemple.
 

Lone-wolf

XLDnaute Barbatruc
Re

@jean marc1234:
oui j'ai revérifier, et pour pas d'erreur j'ai du copier -coller

N'importe quoi. Dans source2 tu as mis une liste que j'ai corrigé d'après l'exemple de Staple1600. Fichier post #35.

EDIT: moi j'ai testé sans problème. C'est toi qui mélange tout.

resultats.gif


Ne me dit pas que c'est faux?!
 

jean marc1234

XLDnaute Occasionnel
Re

@jean marc1234:

N'importe quoi. Dans source2 tu as mis une liste que j'ai corrigé d'après l'exemple de Staple1600. Fichier post #35.

EDIT: moi j'ai testé sans problème. C'est toi qui mélange tout.

Regarde la pièce jointe 1015316

Ne me dit pas que c'est faux?!
re,
que l'on d'accord paracerque la effectivement je pense que je mélange tout.
Le fichier que tu a joint dans le post "35. Devrais fonctionner sans aucune modifs?
 

Lone-wolf

XLDnaute Barbatruc
Re

@jean marc1234

Tu change juste les dates et le critère dans la feuille filtre, c'est tout; tu ne touche plus à rien.

Prend celui-ci. Il faudra ajouter des niveaux dans source1, la liste fait référence à cette feuille
 

Pièces jointes

  • formation V5-2.xlsm
    76.5 KB · Affichages: 12
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour à tous.
Jai une petite question subsidiaire, qu 'elle est la différence entre installer un code dans un module et un onglet de classeur (visualiser le code)
Un module standard est fait pour contenir des procédures à lancer, dont certaines peuvent être affectées à des objets de formulaire. Les éléments y étant déclarés Public sont connus dans tout le projet VBA et ne doivent être déclarés qu'à un seul endroit sous un certain nom.
Un module objet est fait pour contenir des procédures évènement de l'objet auquel il est attaché, et d'éventuels objets ActiveX qui y sont implantés. Les éléments déclarés Public ne sont connu qu'en tant que propriétés de cet objet, mais peuvent être définis avec le même nom dans différents objets.
Les deux sortes de modules peuvent quand même aussi contenir des procédures Private qui ne seraient invoquées que par les autres procédures du module mentionnées ci dessus.
 

jean marc1234

XLDnaute Occasionnel
Re

@jean marc1234

Tu change juste les dates et le critère dans la feuille filtre, c'est tout; tu ne touche plus à rien.
Re, ont d'accord. ben désolé sa fonctionne que si par exemple je tape 01/01/2016 - 31/12/2020
si je veux sélectionner sur une année. Par exemple 01/01/2020-31/12/2020 la sa fonctionne pas.
et je voudrais pourvoir faire ceci pour limiter les erreurs.
Et t'il possible de faire cela? ou alors puis je supprimer le premier critère de date, qui du coup sert a rien.
 

jean marc1234

XLDnaute Occasionnel
Bonjour à tous.
Un module standard est fait pour contenir des procédures à lancer, dont certaines peuvent être affectées à des objets de formulaire. Les éléments y étant déclarés Public sont connus dans tout le projet VBA et ne doivent être déclarés qu'à un seul endroit sous un certain nom.
Un module objet est fait pour contenir des procédures évènement de l'objet auquel il est attaché, et d'éventuels objets ActiveX qui y sont implantés. Les éléments déclarés Public ne sont connu qu'en tant que propriétés de cet objet, mais peuvent être définis avec le même nom dans différents objets.
Les deux sortes de modules peuvent quand même aussi contenir des procédures Private qui ne seraient invoquées que par les autres procédures du module mentionnées ci dessus.
BONJOUR et merci dranreb
Bonjour à tous.
Un module standard est fait pour contenir des procédures à lancer, dont certaines peuvent être affectées à des objets de formulaire. Les éléments y étant déclarés Public sont connus dans tout le projet VBA et ne doivent être déclarés qu'à un seul endroit sous un certain nom.
Un module objet est fait pour contenir des procédures évènement de l'objet auquel il est attaché, et d'éventuels objets ActiveX qui y sont implantés. Les éléments déclarés Public ne sont connu qu'en tant que propriétés de cet objet, mais peuvent être définis avec le même nom dans différents objets.
Les deux sortes de modules peuvent quand même aussi contenir des procédures Private qui ne seraient invoquées que par les autres procédures du module mentionnées ci dessus.
bonjour et merci dranreb
 

Lone-wolf

XLDnaute Barbatruc
Re

@jean marc1234

Et dans la colonne validité de source 2, ou est-ce que tu vois une date avec 2020??? :confused:o_O:eek:

Prend ce fichier, j'ai modifié la source de la liste qui est source1. Si tu as d'autres niveaux à ajouter c'est dans cette feuille qu'il faudra le faire.
 

Pièces jointes

  • formation V5-2.xlsm
    76.5 KB · Affichages: 12
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@jean marc1234
Voir la copie d'écran
(j'ai masqué des colonnes jute pour que l'image soit moins grande)
0102JeanMarc.jpg

Donc si tu mets bien les formules et les intitulés (et ce dans les bonnes cellules)
Que tu mettes le code de macro dans le code de la feuille filtre
( je la remets 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 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 = Feuil4.Range("source2!$F$1:$H$2")
Sheets("source2").Range("TableauSource[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=crit, CopyToRange:=p, Unique:=False
End Sub
Alors cela doit fonctionner ;)

PS: Evidemment c'est à tester tel quel sur le même fichier que j'ai utilisé
(à savoir comme je l'ai déjà précisé le fichier du post de youky(BJ) => message#4 )
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG