Filtre chronologique

Résolu/Fermé
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020 - Modifié par megatronnbjja le 14/06/2013 à 11:59
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020 - 17 juin 2013 à 09:04
Bonjour,

j'ai deux feuilles dans mon classeur.

Dans la première, j'ai la macro suivante qui me permet d'effectuer un filtre dynamique selon les valeurs renseignées en ligne 9.

Dans la deuxième, j'ai une cellule qui me permet de calculer une date : aujourdhui()-200


Lorsqu'un utilisateur tape un mot en ligne 9, je veux que mon filtre dynamique se lance (ça c'est OK, on l'utilise depuis plusieurs mois sans soucis) et que en plus de cela, en colonne G un filtre chronologique s'opère avec comme critère dates supérieures à : aujourdhui()-200 jours.

Mon problème: le filtre dynamique fonctionne mais le filtre chrono me masque toutes les lignes.

Private Sub Worksheet_Change(ByVal Target As Range)


Dim dercol As Integer, i As Long, derlig As Long
Dim date1 As Variant

dercol = Cells(10, Cells.Columns.Count).End(xlToLeft).Column   'défini la dernière colonne remplie en ligne 10
derlig = Range("A" & Rows.Count).End(xlUp).Row                 'défini la dernière ligne remplie en colonne A


If Not Intersect(Target, Range("A9", Cells(9, dercol))) Is Nothing Then  'Condition : si modification d'une cellule en ligne 9


  For i = 1 To dercol
  
     Select Case Target.Address
        Case Cells(9, i).Address
            If Target = "" Then    'si la cellule est vidée
                Range("A10", Cells(derlig, dercol)).AutoFilter Field:=i 'critère de filtre: ""
                Range("A10", Cells(derlig, dercol)).AutoFilter Field:=7
            Else
               Range("A10", Cells(derlig, dercol)).AutoFilter Field:=i, Criteria1:="*" & Cells(9, i).Value & "*"  'si la cellule contient une valeur alors le critère de filtre est: valeur de la cellule
               Range("A10", Cells(derlig, dercol)).AutoFilter Field:=7, Criteria1:=">" & Sheets("mise au point des macros").Cells(2, 10)
            End If
     End Select
  Next i
End If

End Sub


A savoir que quand je rentre dans le menu déroulant de mon filtre," filtre chrono" est bien sélectionné, "après" est bien coché, la date renseignée dans le champ est la bonne. Lorsque je clique sur ok,le filtre se met en place et m'affiche les lignes désirées. C'est un peu bizare...

Merci d'avance pour votre aide.
Megatron
A voir également:

1 réponse

megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020
17 juin 2013 à 09:04
Bonjour,

Visiblement pas trop d'idée sur le sujet... :)
Voici la solution si jamais quelqu'un est intéressé:
Fonction Csng

Range("A10", Cells(derlig, dercol)).AutoFilter Field:=7, Criteria1:=">" &  Csng(Sheets("mise au point des macros").Cells(2, 10))


Merci à Banzai64
0