Filtre date en vba excel

Résolu
Signaler
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009
-
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009
-
bonjour,

j'aurai besoin d'un coup de main pour un filtre pour des dates.
Je procède en copiant ma base de données sur une page intermédiaire dans un premier temps,
j'effectue un filtre selon une immatriculation en suite
Je copie la selection visible de cette nouvelle base de donnée dans une nouvelle page intermédiaire
puis j'essaie d'effectuer un nouveau filtre en fonction de la date.
Le premier filtre fonctionne très bien, c'est pour la date que ça n'affiche rien en résultat, je pense que c'est en fonction du supérieur à  ">" sachant que ma date est tirée d'une combobox, et que la date est le résultat d'une formule excel  =DATE(I6;I4;I2) réalisée par les premières textbox 1 à 6 située dans la case Feuil9.Range("i16")

voici mon code:

Private Sub CommandButton1_Click()
    'fixe la saisie des dates
    Feuil9.Range("i2").Value = TextBox1.Value
    Feuil9.Range("i4").Value = TextBox2.Value
    Feuil9.Range("i6").Value = TextBox3.Value
    Feuil9.Range("i8").Value = TextBox4.Value
    Feuil9.Range("i10").Value = TextBox5.Value
    Feuil9.Range("i12").Value = TextBox6.Value
   
    'date:
    'debut: j1/m1/a1
    'fin: j2/m2/a2
    Dim j1 As Variant
    Dim j2 As Variant
    Dim m1 As Variant
    Dim m2 As Variant
    Dim a1 As Variant
    Dim a2 As Variant
        j1 = j1 + 1
        j2 = j2 + 1
        m1 = m1 + 1
        m2 = m2 + 1
        a1 = a1 + 1
        a2 = a2 + 1
       
        If TextBox1.Value <> "" Then
        j1 = Feuil9.Range("i2").Value
        End If
        If TextBox2.Value <> "" Then
        m1 = Feuil9.Range("i4").Value
        End If
        If TextBox3.Value <> "" Then
        a1 = Feuil9.Range("i6").Value
        End If
        If TextBox4.Value <> "" Then
        j2 = Feuil9.Range("i8").Value
        End If
        If TextBox5.Value <> "" Then
        m2 = Feuil9.Range("i10").Value
        End If
        If TextBox6.Value <> "" Then
        a2 = Feuil9.Range("i12").Value
        End If
       
        'affichage si besoin:
'        Feuil9.Range("i15").Value = DateSerial(a1, m1, j1)
'        Feuil9.Range("i17").Value = DateSerial(a2, m2, j2)
       
        'date en chiffre entier:
        'Feuil9.Range("i16")= 1ère date
        'Feuil9.Range("i18")= 2ème date
       
'affichage immatriculation
Feuil9.Range("i19").Value = ComboBox1.Value

'copy de la totalité de la feuille carburant en feuille intermediaire pour filtrage
    Feuil12.Cells.Clear
    Feuil11.Rows.Copy
    Feuil12.Select
    Feuil12.Rows.Select
    Feuil12.Paste
   
'nettoyage des pages intermediaires
    Feuil2.Cells.Clear
    Feuil3.Cells.Clear
   
'critère de selection immatriculation
    Dim Bselect As Range
    'les filtres sont sur la ligne 1
    Feuil12.Range("A1").Select
   
    'filtrage immatriculation
    Selection.AutoFilter field:=2, Criteria1:=ComboBox1.Value
   
    Set Bselect = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeVisible)
    Bselect.Copy
    Debug.Print Bselect.Address
   
    Feuil3.Select
    Feuil3.Rows.Select
    Feuil3.Paste
   
'critère de selection date
    Dim Cselect As Range
    'les filtres sont sur la ligne 1
    Feuil3.Range("A1").Select
   
    'filtrage date: début= feuil9.range("i16") fin= feuil9.range("i18)
    Selection.AutoFilter field:=1, Criteria1:=(Date > Feuil9.Range("i16"))
   
    Set Cselect = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeVisible)
    Cselect.Copy
    Debug.Print Cselect.Address
   
    Feuil2.Select
    Feuil2.Rows.Select
    Feuil2.Paste

    UserForm3.Hide
    UserForm11.Show

End Sub

merci par avance, et pour information, je vais faire cette meme opération de filtrage une troisième fois pour les dates inférieures ( autrement dit pour faire "entre le" et "le"), si vous connaissez la manière de faire d'une pierre 2 coup dans ce filtrage, merci encore plus...

1 réponse

Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

Pour ceux que ça pourrait interesser, j'ai trouvé:

    Selection.AutoFilter field:=1, Criteria1:=">=" & Feuil9.Range("i16")

et je pense rajouter en criteria 2 l'inférieur à la 2ème date...

YOUPIE...!