XL 2010 Filtres élaborés

counterbob

XLDnaute Nouveau
Bonjour,
Sur un classeur je souhaiterais effectuer des filtres élaborés afin d'extraire les valeurs sur différentes feuilles.
J'ai voulu m'inspirer des excellents modèles de JacquesBoisgontier mais je ne n'y arrive pas pour mon classeur
La feuille BD contient toutes les entrées.
les feuilles suivantes les extractions
Merci pour une piste
Cordialement
 

Pièces jointes

  • TestFiltre.xlsm
    54.4 KB · Affichages: 15

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Sans macro : dans le fichier joint sur la feuille 'TCD' vous avez un tableau croisé dynamique avec en catégorie le Grade pour les valeurs la dernière date; si j'ai bien compris le sens de
Ne conserver uniquement la date la plus récente
Je l'ai entendu 'pour chaque patient'.

double cliquez sur une cellule de date en face de GARD1 (ou 2 ou 3 ou 4) et vous aurez instantanément vos données filtrées dans une nouvelle feuille.

Cordialement
 

Pièces jointes

  • TestFiltre.xlsm
    70.1 KB · Affichages: 6

counterbob

XLDnaute Nouveau
Oui merci pour cette proposition, je l'ai prise pour un autre classeur. J'étais parti sur l'exemple de Jacques Boigontier avec ce classeur mais je n'arrive pas à l'adapter sur mes données.
Je joins le classeur exemple. Sur les feuilles extractions je veux afficher les valeurs de la dernière date pour chacun des GARD,
par contre pour les feuilles Gard3 et Gard4 je veux afficher en plus une colonne avec la dernière date de l'autre Gard.
Pour GARD3 afficher la dernière date de GARD4
Pour GARD4 afficher la dernière date de GARD3
Cordialement
 

Pièces jointes

  • FiltreElaboreSupDoublons2-1.xls
    47 KB · Affichages: 3
  • TestFiltre-1.xlsm
    63.3 KB · Affichages: 4

Lolote83

XLDnaute Barbatruc
Bonjour COUNTERBOB, ROBLOCHON,
Je ne suis pas sur d'avoir tout compris.
Si tu choisis :
- GARD1, tu souhaites donc afficher toutes les fiches dont la date la plus récente est le 21/09/2020 ?
- GARD2, tu souhaites donc afficher toutes les fiches dont la date la plus récente est le 15/09/2020 ?
- GARD3, tu souhaites donc afficher toutes les fiches dont la date la plus récente de GARD4 est le 05/10/2020 ?
- GARD4, tu souhaites donc afficher toutes les fiches dont la date la plus récente de GARD3 est le 24/09/2020 ?
J’avoue être dans le flou total.
@+ Lolote83
 

counterbob

XLDnaute Nouveau
Bonjour, Lolote83 , non ce n'est pas ça.
-Pour GARD1 je souhaite afficher les fiches les plus récentes pour nom_prenom sans doublon.
-Pour GARD2 idem
-Pour GARD3 je je souhaite afficher les fiches les plus récentes pour nom_prenom sans doublon et ajouter une colonne avec la date la plus récente de GARD4 pour chaque fiche trouvée nom_prenom
-Pour GARD4 je je souhaite afficher les fiches les plus récentes pour nom_prenom sans doublon et ajouter une colonne avec la date la plus récente de GARD3 pour chaque fiche trouvée nom_prenom

Mon idée était
1. Extraire les fiches sur des feuilles selon GARD(x) effectuer un tri ascendant de la colonne Date puis un tri Nom_Prenom.
2. Supprimer les fiches dont les dates sont les plus anciennes. Exemple: supposont que Pierre_Martin à effectué GARD1 le 02/02/2018, puis GARD1 le 03/07/2019 je garde la fiche du 03/07/2019.
3. Pour GARD3 effectuer une recherche dans la feuille GARD4 du nom_prenom et inscrire la date trouvée dans GARD4 sur la dernière colonne de GARD3
4. Pour GARD4 idem que GARD3

Voilà je ne sais pas si c'est plus clair
Merci pour votre aide.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Un peu tard, mais autres choses à faire...

Dans le fichier joint, une macro d'extraction qui vous construira 4 tableaux structurés avec vos données par GARD et filtrer pour chaque nom_prénom sur la dernière date

Pour GARD3 elle rajoute une colonne nommée 'GARD4' qui contient une formule allant chercher dans GARD3 les dates des nom_prénoms existant.

Ces 4 tableaux étant créés si des données changent dans BD, sans avoir à relancer la macro, vous pourrez les réactualiser par click-droit à l'interieur puis le choix 'Actualiser' ou par données/Actualiser tout.

Cordialement
 

Pièces jointes

  • TestFiltre-adodb.xlsm
    41.4 KB · Affichages: 5

counterbob

XLDnaute Nouveau
Merci Roblochon
je n'ai pas tout compris dans le code mais c'est top !
Seul petit détail , l'actualisation des feuilles créées ne fonctionne pas sur "click-droit actualiser" lorsque je mets à jour la BD (rajout ou modification).
Pour remédier à ça j'ai ajouté un code de suppression des feuilles. avant l'extraction.
Merci beaucoup je vais l'adapter sur le classeur original.
@+
Cordialement
 

Pièces jointes

  • TestFiltre-adodb.xlsm
    58.3 KB · Affichages: 3

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour,


l'actualisation des feuilles créées ne fonctionne pas sur "click-droit actualiser"

Oui, ce sera mieux dans le fichier ci-dessous.

Dans BD à la ligne 38 (Yohann_BRIIRIAND) j'ai mis 2/7/2020 au lieu de 2/4/2020 et sur ExtractGard3 la donnée s'actualise bien sur click droit.

J'ai déplacer votre macro de suppression des feuilles dans une procédure à part parce que normalement, vous ne devriez pas avoir à supprimer systématiquement les feuilles.

Cordialement
 

Pièces jointes

  • TestFiltre-adodb (1).xlsm
    64.5 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

J'ai répondu à la question telle qu'elle a été exposée, avec les exemples donnés 'GARD1 à n', c'est juste une méthode parmi d'autres. A vous de l'étudier et de tenter de l'adapter.

Piste :
1 - remplacer la boucle for i = 1 to 4 par une boucle qui ira chercher les noms de chaque service dans votre liste.
2 - remplacer la partie suivante Replace(SQL_GARD, "????", "GARD" & i) de la ligne
Replace(Replace(SQL_GARD, "????", "GARD" & i), "@@@@", Adresse)
Par : Replace(SQL_GARD, "????", NOM_SERVICE)
Où NOM_SERVICE est une variable contenant le nom du service.
3 - créer un test qui remplacera If i > 2 Then puisque les noms ne seront plus indéxés (PROD, FACT, ETUD) et adapter les actions en conséquences.
4 - après la ligne rst.Open SQL, cnx rajouter un test pour savoir si la requête a renvoyé quelque chose (si oui créer le tableau, si non, passer au suivant) If rst.RecordCount >0 then....Else....Endif Dans votre dernier exemple, il n'y a aucune données pour les trois services rajoutés !



Cordialement
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
148

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali