Code VBA filtre entre deux dates

Fermé
SAYRO Messages postés 154 Date d'inscription mardi 6 mars 2018 Statut Membre Dernière intervention 7 septembre 2022 - 23 nov. 2018 à 11:07
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 27 nov. 2018 à 17:48
Bonjour,

j'ai des tableaux croisés dynamiques dans un onglet je veux filtrer tous les TCD d'un onglet précis (car il y a des TCD dans les autres onglets) entre deux dates que je saisie dans une boite de dialogue
Est ce que un expert peut m'aider ?

Merci :-)

Configuration: Windows / Chrome 70.0.3538.102
A voir également:

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
27 nov. 2018 à 09:11
Bonjour,

Un exemple, les dates et les données sont en colonnes I et J, le TCD en A et B

Sub exclure()
    Application.ScreenUpdating = False
    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("dates_x").ClearManualFilter ' on enlève les filtres précédents
    
    'Exlusion dans le TCD
    DateDeb = [I7] ' date de début choisie
    DateFin = [I16] ' date de fin choisie
    
    Set PosDeb = Columns("A").Find(DateDeb, LookIn:=xlValues) 'on recherche la position de la date de début dans le TCD
    vDeb = PosDeb.Row
    Set PosFin = Columns("A").Find(DateFin, LookIn:=xlValues) 'on recherche la position de la date de fin dans le TCD
    vFin = PosFin.Row
    
    DateDeb = Format([I7], "d/m/yyyy") 'on applique le format de date reconnaissable dans le TCD
    DateFin = Format([I16], "d/m/yyyy") 'on applique le format de date reconnaissable dans le TCD
    
    NbrVal = [A1000].End(xlUp).Row - 1 ' on compte le nombre de valeur dans le TCD
    For i = 2 To NbrVal
        If i < vDeb Or i - 1 > vFin Then ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("dates_x").PivotItems(i - 1).Visible = False  'on masque tout ce qui hors des dates choisies
    Next i
End Sub


Avec le fichier, filtre sur les dates comprises entre le 06/10/18 et le 16/01/18 (dates de début et de fin comprises)
https://www.cjoint.com/c/HKBijNO3Cgw

Ne reste plus qu'à l'adapter

cdlt
0
SAYRO Messages postés 154 Date d'inscription mardi 6 mars 2018 Statut Membre Dernière intervention 7 septembre 2022 2
27 nov. 2018 à 14:34
Bonjour,

Merci beaucoup pour votre réponse,

La macro que vous m'avez proposée est difficile à adapter sur mon fichier je vais vous dire pour quoi:

1-Les dates je les ai pas en colonne mais en filtre sur chaque TCD
2- J'ai plusieurs TCD et non pas un seul
3- J'ai deux cellules: une cellule ou je saisie la date de début et une autre cellule où je saisie la date de fin du filtre ces deux cellules sont dans la feuil1, le filtre sera fait en fonction de ces dates
4- tous les TCD sont dans un un autre onglet en l’occurrence feuil2 et je souhaite faire le filtre sur tous les TCD

Je ne vois pas trop comment je peux adapter votre code sur mon fichier pouvez-vous m'expliquer un peu plus

Merci

Bonne journée
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
27 nov. 2018 à 17:48
1-Les dates je les ai pas en colonne mais en filtre sur chaque TCD
Si vous avez ouvert le fichier joint, il y a un TCD et comme il est placé en colonne A et B, le filtre se fait sur la colonne A(dates), Tcd ou pas les données sont quand même en colonnes.

2- J'ai plusieurs TCD et non pas un seul , il suffit de reproduire le programme pour chaque TCD

3- J'ai deux cellules: une cellule ou je saisie la date de début et une autre cellule où je saisie la date de fin du filtre ces deux cellules sont dans la feuil1, le filtre sera fait en fonction de ces dates . Comme je ne connais la structure de votre fichier, j'ai mis des dates fixes. pour l'adapter à votre fichier , il faut remplacer les dates fixes par les cellules des dates debut et fin.

4- tous les TCD sont dans un un autre onglet en l’occurrence feuil2 et je souhaite faire le filtre sur tous les TCD Peu importe ou se trouve les TCD, ça ne changera rien au fonctionnement, il suffit de mettre les bonnes indications.

Si vous ne savez pas faire, déposez un fichier ayant la même structure , en prenant soin de remplacer auparavant les données confidentielles par des valeurs bidons.

Cdlt
0