Autres Comment traiter filtre imbriqué en formule VBA ? (filtres sur plusieurs colonnes) sur TCD (avec segment) et sur simple base de données

Scoub

XLDnaute Nouveau
Bonjour,

Décidément j'ai vraiment du mal avec la programmation des filtres sur VBA.
J'ai plusieurs onglets avec des TCD avec segment et des onglets avec différentes bases de données.

Je voudrais dans un autre onglet mettre des critères de sélection unique (style catégorie (un ensemble de nom) puis nom (élément plus précis...) voire ensuite un autre filtre) et aussi un filtre date avec date de début et/ou de fin (possibilité d'inscrire à date ou qu'une seule date ou 2 suivant le souhait du filtre pour les appliquer à différents onglets (TCD et bases de données)

A priori j'ai réussi à faire le filtre catégorie (semble fonctionner)
pour le filtre date avec beaucoup de mal, ce la semble fonctionner aussi.
Par contre ensemble ou l'un après l'autre, cela semble planter.

J'ose même pas vous dire combien de temps je suis sur ces filtres....

J'ai fait les programmes des filtres indépendamment. A priori, il s'agit principalement du filtre date segment sur TCD qui ne semble pas fonctionner...

VB:
Dim choixDateMIN, choixDateMAX As Long

Sheets("Selections").Activate
choixDateMIN = Worksheets("Selections").Range("D10").Value
Dim I, J, PosDateMIN As Long

Sheets("TCD Vision client").Activate
    With ActiveSheet
  
    'filtre pour les segments TCD avec segment
  
        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
  
    End With


A priori si le filtre date (sur segment) est traité en 1er, cela peut fonctionner sauf si absence de valeur correspondante.
Dans ces conditions, je ne peux pas prévoir 2 filtres avec segment. 😢
Comment faire pour ne pas être contraint par cet ordre ?

Il semblerait que l'absence de valeur correspondante au critère (aucun critère sélection d'après le filtre), je peux avoir un soucis pour le traitement (je continue les tests :( ).

Besoin de votre aide.
Merci d'avance,
Cordialement,
Scoub

PS et je n'ai même pas fini de coder pour la date Max ou fin et tester le filtre nom voire un autre filtre supplémentaire :(
 
Dernière édition:

Statistiques des forums

Discussions
314 698
Messages
2 112 003
Membres
111 388
dernier inscrit
ABBM