XL 2019 Filtre avancé avec deux critères sur une colonne DATE

Cagouille65

XLDnaute Nouveau
Bonjour à tous,

J'essaie désespérément de créer un fichier avec une gestion par filtre avancé. Je suis assez satisfait dans l'ensemble mais il y a une chose que je n'arrive pas à faire : C'est gérer une date de début et une date de fin sur une colonne. Le principe est que lorsque l'on mets une début ou une date de fin ou les deux, le filtre trie sur la colonne date de paiement. Pour le moment cela fonctionne mais le tri se fait sur deux colonnes. La colonne date d'émission pour le critère date de début et date de paiement pour le critère date de fin.

Comment puis-je faire fonctionner mon filtre avec deux critères sur une colonne

Je vous mets le fichier en pièce jointe pour que vous compreniez mieux. Bien sûr, je suis à l'écoute de vos commentaires et retours. Pardonnez mon code un peu brouillon mais j'ai utilisé l'enregistreur de macro pour travailler.

Merci à tous
 

Pièces jointes

  • Projet Facture - TEST.xlsm
    260.6 KB · Affichages: 35
Dernière édition:
Solution
RE

Comme dit, plutôt que VBA, il vaut mieux utiliser PowerQuery

Même si le filtre avancé est très efficace, il n'a pas évolué depuis une éternité et n'intègre pas les nouveautés apparues depuis la version 2003 : les tableaux structurés notamment

On peut le forcer à les utiliser comme source en indiquant simplement comme source
Code:
Range("T_Factures[#All]")
au lieu de
VB:
Sheets("FACTURES").Range("A4:G15000")
(ce qui résoud le problème du nombre de lignes)
mais pas à restituer directement dans un tableau structuré

A noter qu'en VBA il faut toujours préciser l'onglet cible du CopyToRange

chris

XLDnaute Barbatruc
Bonjour

C'est normal puisque les titres des colonnes de critères sont date d'émission et date de paiement
Il faudrait deux fois date d'émission l'une avec un critère >= et l'autre <=

Avec 2019, tu peux extraire via PowerQuery

A noter que tes tableaux structurés de l'onglet DONNEES ne doivent pas contenir de ligne vide et donc s'arrêter pour chacun à la dernière remplie et non correspondre à une colonne Excel d'1 millions de lignes sinon tu perds 95% des avantages...

Edit : tes onglets FACTURES, DONNEES_CHANTIER devraient être sous forme de tableaux structurés et ne pas avoir des validations sur 1 millions de lignes : tu ralentis inutilement le fonctionnement de ton classeur à gérer ainsi sur les colonnes entières
 
Dernière édition:

Cagouille65

XLDnaute Nouveau
Merci pour ta réponse. Je vais corriger et tester de suite.

J'aurai du coup deux questions :

1 - Mon code est-il correct ou peut-il être optimisé?
2 - Si je structure comme tu me dis dans ton message est-ce que les lignes que je rajouterai par la suite seront prises en compte? Je m'explique, si je fais un tableau avec mille lignes et que j'ai mille une entrées comment sera gérée la dernière ligne ?

En tout as je te remercie pour ta réponse.
 

chris

XLDnaute Barbatruc
RE

Comme dit, plutôt que VBA, il vaut mieux utiliser PowerQuery

Même si le filtre avancé est très efficace, il n'a pas évolué depuis une éternité et n'intègre pas les nouveautés apparues depuis la version 2003 : les tableaux structurés notamment

On peut le forcer à les utiliser comme source en indiquant simplement comme source
Code:
Range("T_Factures[#All]")
au lieu de
VB:
Sheets("FACTURES").Range("A4:G15000")
(ce qui résoud le problème du nombre de lignes)
mais pas à restituer directement dans un tableau structuré

A noter qu'en VBA il faut toujours préciser l'onglet cible du CopyToRange
 

chris

XLDnaute Barbatruc
 

Cagouille65

XLDnaute Nouveau
Bonjour

Merci pour les infos. Je viens de commencer à regarder powerquery et en effet cela à l'air puissant. Par contre il faut que je regarde comment se passe l'interaction entre powerquery et VBA et surtout savoir comment j'intègre des critères dans les requêtes powerquery par le biais de listes....

En tout cas merci pour votre aide.
 

chris

XLDnaute Barbatruc
Re
comment se passe l'interaction entre powerquery et VBA
Les requêtes ne nécessitent qu'une actualisation : ThisWorkbook.RefreshAll
comment j'intègre des critères dans les requêtes powerquery par le biais de listes
Il suffit de croiser la liste des critères avec la table des données

SI tes critères sont facultatifs et portent sur des champs différents il faut commencer par les mettre à plat :

  • Ton modèle actuel est erroné : tu prévois de saisir une date de début et une date de fin sur le champ date d'émission mais tu construis ta liste sur 2 champs d'où le problème qui t'as amené ici
    Mais on ne sait pas s'il y a besoin de critères sur le champ date de paiement
  • Tu dupliques tes critères sur chaque onglet ce qui est a priori parfaitement inutile
  • Cela a-t'il un sens de filtrer sur un montant exact ?
  • IL n'est pas prévu de multi valeurs : pour plusieurs clienst ou plusieurs mots...
Bref il faut analyser clairement le besoin pour pouvoir filtrer correctement que ce soit par l'automatisation du filtre avancé ou par PowerQuery
 

Cagouille65

XLDnaute Nouveau
Je t'avoues n'avoir pas tout compris. Mon idée de base est de rentrer mes factures à la chaîne puis à partir de là en tirer différentes synthèses. Par exemples je souhaiterai savoir combien j'ai dépensé chez un fournisseur ou encore combien me coûte tel ou tel chantier, etc....

L'idée est de me permettre de gérer au plus près mes futurs chantiers mais j'avoue ne pas maîtriser l'ensemble de la programmation.... Je débute lollll
 

chris

XLDnaute Barbatruc
RE

Ce n'est pas un problème de programmation mais de définir précisément justement hors de toute solution technique sur quoi tu as besoin de filtrer

Si c'est un filtre simple, des segments associés à ton tableau structuré sur l'onglet Factures suffit
 

Cagouille65

XLDnaute Nouveau
Tout d'abord, j'espère ne pas trop être une prise de tête. Si c'est le cas, je vous demanderai d'être tolérant....lolll.... vous allez en avoir besoin.

Je vous joins mon fichier avec en première page une synthèse de ce que je voudrais que cela donne, sachant qu'il y aurait à terme d'autres idées pour optimiser et améliorer le suivi de mes chantiers.

J'ai commencé ce fichier sur excel en VBA et j'en suis super content car je ne pensais pas du tout obtenir ce résultat. Maintenant j'ai bien pris en compte tous ce que vous m'avez dit et j'aimerai effectivement le reprendre dans son intégralités sur powerquery mais ma question est la suivante :
- Comment fait-on par exemple pour que depuis ma feuille BILAN_CHANTIER quand je choisis un client depuis une liste, cela interprète les requetés powerquery associés et me donne le même résultat qu'actuellement ? Pour le moment je ne vois pas comment le gérer.

Merci à tous....
 

Pièces jointes

  • Projet Facture - TEST.xlsm
    387.4 KB · Affichages: 8

chris

XLDnaute Barbatruc
RE

Bien !

Les synthèses SYNT_ENTR_FOURN, FICHE SYNTHESE CLIENT peuvent être alimentées par des requêtes PowerQuery

Concernant les critères il faut préciser
  • sur quelle date porte début et fin : émission ?
  • pour client et pour fournisseur si on cherche un seul ou éventuellement plusieurs
  • si les 4 critères sont obligatoires ou non ou si certains sont liés
    exemple on oblige fin et début ou bien début seul ou fin seul est acceptés...
A partir du moment une une requête est prévue pour être filtrée par critère(s) il suffit de l'actualiser lors du changement de critères
 

Cagouille65

XLDnaute Nouveau
  • sur quelle date porte début et fin : émission ? OUI effectivement c'est sur la date emission
  • pour client et pour fournisseur si on cherche un seul ou éventuellement plusieurs - Sur la synthèse entreprise/Fournisseur la priorité est de faire la synthèse sur tel ou tel fournisseur, après je souhaiterai comme je le fais sur le projet en VBA pour y intégrer d'autres critères pour pouvoir être plus précis. Par exemple connaître le nombre de factures émises entre une date et une autre date pour tel fournisseur sur tel ou tel chantier.
  • si les 4 critères sont obligatoires ou non ou si certains sont liés
    exemple on oblige fin et début ou bien début seul ou fin seul est acceptés.. Non aucun critère n'est lié. Chacun sont totalement indépendant. Cela m'est d'autant plus utile que pour la compta je dois être en mesure de dire le nombre de factures à régler depuis une date précise. (Généralement 2 mois)....

Attention, je ne demande pas que l'on fasse le travail à ma place car j'estime que c'est un défi très intéressant de développer une solution qui me corresponde exactement. Mais il est vrai aussi que c'est un peu compliqué pour tous assimiler d'un coup.

Bonne soirée
 

chris

XLDnaute Barbatruc
Bonjour

Exemple avec 1 filtre pour extraire des factures les données vers SYNT_ENTR_FOURN

Exemple avec 1 filtre pour extraire des factures les données vers FICHE SYNTHESE CLIENT (ce que j'ai compris

(Les tables et les validations ont été normalisées)

Utiliser Données, Actualiser Tout après changement d'un filtre (on automatisera plus tard)
 

Pièces jointes

  • Projet Facture_PQ.xlsx
    62.8 KB · Affichages: 20

Cagouille65

XLDnaute Nouveau
Bonjour,

Je viens de regarder le fichier que tu m'as envoyé. Si j'ai compris que tu fais une liaison entre choix qui te permets de définir les critères et les autres tables mais que vient faire Nb crit et PC???

deuxième question comment puis-je faire pour actualiser automatiquement au moment de mes choix de critères ?

Merci
 

Discussions similaires

Réponses
14
Affichages
487

Statistiques des forums

Discussions
311 711
Messages
2 081 783
Membres
101 817
dernier inscrit
carvajal