Autres Pourquoi les coches dans le filtre ne s'affiche pas malgré code VBA semble marcher (uniquement filtre personnalisé dans table base de données)

Scoub

XLDnaute Nouveau
Bonjour,

J'ai l'impression de perdre mon latin.
j'aurais besoin de votre aide pour comprendre svp
J'ai essayé de créer un filtre "supérieur ou égale à" sur la colonne date d'un l'onglet base de donnée en VBA (pour tester avant de faire un autre critère inférieur à indépendant ou une période à sélectionner) avec une valeur saisie dans un autre onglet.

Le programme VBA pour réaliser le filtre semble fonctionner après de multiples tentatives. (même si j'ai eu beaucoup de mal avec les formats des dates... et encore cela n'est peut-être pas très beau comme programme)

VB:
NUMDateMIN = CDate(Worksheets("Selections").Range("D10").Value)

Selection.AutoFilter _
    Field:=18, Criteria1:=">=" & Format(NUMDateMIN, "mm/dd/yyyy"), _
    Operator:=xlFilterValues

Les données semblent être filtrées.
Je voulais vérifier dans le menu filtre de cette colonne que cela correspondait bien... (toutes les cases des dates supérieures ou égale à la date saisie soit bien cochée comme si on le faisait manuellement)....
Aucune case cochée par contre la rubrique filtre chronologique / filtre personnalisé le critère de la date est bien inscrite.

Pourriez-vous me dire comment visuellement cocher toutes les dates correspondants svp ?
Quel élément du programme j'ai loupé ?

Merci d'avance,
Cordialement,
Scoub


ps :

le comble, c'est que j'ai aussi tenté avec beaucoup de mal à appliquer ce filtre date sur le TCD et le segment (filtre date) et les cases des dates sont cochées.
même si ce code n'est pas très esthétique.
Ma difficulté était que je n'avais pas le détails des dates dans le TCD (pas en colonne) mais uniquement dans la zone de filtre générale et bien sûr les dates ne se suivent pas...
Si vous avez mieux je suis preneur ;)

Code:
Sheets("TCD Vision client").Activate
    With ActiveSheet
      
        With ActiveWorkbook.SlicerCaches("Segment_ORDER_DATE")
            
                For I = 1 To .SlicerItems.Count
                    'valeur = Format(.SlicerItems(I).Caption, "0000") - Format(choixDateMIN, "0000")
                    If Format(.SlicerItems(I).Caption, "0000") >= Format(choixDateMIN, "0000") Then
                        If Format(.SlicerItems(I - 1).Caption, "0000") < Format(choixDateMIN, "0000") Then
                        '.SlicerItems(I).Selected = False
                        '/ Format(.SlicerItems(I).Caption, "0000") /Format(choixDateMIN, "0000")
                        PosDateMIN = I
 
                        Else
                        End If
                    Else
                    '.SlicerItems(I).Selected = True
                    End If
                Next I
                For J = 1 To .SlicerItems.Count
                    If J < PosDateMIN Then
                        .SlicerItems(J).Selected = False
                    Else
                    .SlicerItems(J).Selected = True
                    End If
                Next J
          
            
        End With
 
Solution
On peut en VBA cocher les bonnes cases comme le montre cet exemple avec l'enregistreur :
VB:
    ActiveSheet.Range("$C$1:$C$27").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "2/2/2022", 2, "2/3/2022", 2, "2/4/2022", 2, "2/5/2022")
mais cela suppose de connaitre les dates listées dans le filtre.
Ce qui rend quasi impossible de le faire, sinon de façon très compliquée. ( analyse de toutes les dates, puis cochage )
Donc à mon avis une piste à abandonner.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Scoub,
Si sur une liste de dates vous faites un filtre personnalisé, les coches n'apparaissent pas dans le filtre, c'est le fonctionnement normal.
Par ex ci dessous les dates sont filtrées si >=05/02 par filtre personnalisé , aucune coche n'est activée :
1643662070581.png
 

Scoub

XLDnaute Nouveau
Bonsoir Scoub,
Si sur une liste de dates vous faites un filtre personnalisé, les coches n'apparaissent pas dans le filtre, c'est le fonctionnement normal.
Par ex ci dessous les dates sont filtrées si >=05/02 par filtre personnalisé , aucune coche n'est activée :
Regarde la pièce jointe 1129374
Merci Sylvanu pour cette réponse.

Est-ce que le programme VBA inscrit toujours la sélection du filtre dans le filtre personnalisé ou est-ce qu'il existe une autre programmation permettant de cocher ces cases svp ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
On peut en VBA cocher les bonnes cases comme le montre cet exemple avec l'enregistreur :
VB:
    ActiveSheet.Range("$C$1:$C$27").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "2/2/2022", 2, "2/3/2022", 2, "2/4/2022", 2, "2/5/2022")
mais cela suppose de connaitre les dates listées dans le filtre.
Ce qui rend quasi impossible de le faire, sinon de façon très compliquée. ( analyse de toutes les dates, puis cochage )
Donc à mon avis une piste à abandonner.
 

Scoub

XLDnaute Nouveau
On peut en VBA cocher les bonnes cases comme le montre cet exemple avec l'enregistreur :
VB:
    ActiveSheet.Range("$C$1:$C$27").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "2/2/2022", 2, "2/3/2022", 2, "2/4/2022", 2, "2/5/2022")
mais cela suppose de connaitre les dates listées dans le filtre.
Ce qui rend quasi impossible de le faire, sinon de façon très compliquée. ( analyse de toutes les dates, puis cochage )
Donc à mon avis une piste à abandonner.
Merci Sylvanu

En effet, c'est ce que je redoutais.
Je ne connais pas en avance les dates listées qui peuvent évoluer.
J'ai réussi difficilement à cocher les cases / sélections dans le segment du TCD... (bout de programme dans le PS initial)
Je suppose qu'il faudrait réaliser une programmation similaire voire même plus compliqué car je ne vois pas comment évaluer les dates listées dans ce filtre contrairement au segment.
De plus est-ce que ce bout de programme serait toujours opérationnel avec des filtres sur d'autres colonnes avec d'autres données (filtre à chaque fois réduisant les possibilités de tri sur les filtres suivants) ?

D'autres pistes envisageables ou je vais abandonner ces cases à cocher (partie esthétique) ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
D'autres pistes envisageables ou je vais abandonner ces cases à cocher
Faire une usine à gaz pour de l'esthétique ... perso, le choix est clair. :)
Mais quel est l'intérêt ? Rappeler à l'utilisateur le filtre mis en place ?
Dans ce cas, on a comme possibilités, entre autres :
1- Un Msgbox en fin de macro pour rappeler les dates filtrées, du tant au tant.
2- Deux cellules dans la feuille où seraient mises ces dates.
3- Un message dans le statusbar, mais il faut trouver un moyen de l'effacer si l'utilisateur supprime le filtre.
 

Scoub

XLDnaute Nouveau
Faire une usine à gaz pour de l'esthétique ... perso, le choix est clair. :)
L'intérêt aurait été visuel et peut-être pour affiner le filtre par la suite suivant besoin manuellement par un utilisateur...

Il me semble que ton choix est le mien même si je suis un peu déçu car j'avais l'impression d'y être presque et qu'il manquait pas grand chose (je n'imaginais pas que ce petit plus aurait été une usine à gaz). ;)

PS : dans l'onglet sélection j'ai la date de début (et j'envisage de compléter ce filtre par une date de fin optionnelles ou cumulées)

Encore Merci Sylvanu
 

Statistiques des forums

Discussions
311 720
Messages
2 081 885
Membres
101 830
dernier inscrit
sonia poulaert