XL 2010 AutoFilter entre 2 dates UserForm et TextBox

modus57

XLDnaute Occasionnel
Bonsoir.

Je sollicite votre aide pour un petit souci que je rencontre lors d'un filtre entre 2 dates avec un formulaire qui contient 2 TextBox le premier pour la date de début et le second pour la date de fin.

Voici mon code mais il ne filtre rien :
VB:
Private Sub CommandButton1_Click()
    If TextBox1 = "" Then
        MsgBox "Entrer Une Date De Début"
    Else
        If TextBox2 = "" Then
            MsgBox "Entrer Une Date De Fin"
        Else
            Dim datedbut As String
            Dim datefin As String
            datedebut = Format(TextBox1, "dd-mm-yyyy")
            datefin = Format(TextBox2, "dd-mm-yyyy")
            ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=3, Criteria1:=">=" & datedebut, Operator:=xlAnd, Criteria2:="<=" & datefin
        End If
    End If
End Sub
Comment régler ce problème.

Merci d'avance pour vos réponses.
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Personnellement j'utiliserais plutôt les fonctions CDate pour convertir les 2 TexBoxes en variables dates, si la colonne à filtrer contient des valeurs en format date.
VB:
Private Sub CommandButton1_Click()
    Dim DateDébut As Date
    Dim DateFin As Date
           
    If Not IsDate(TextBox1) Then
        MsgBox "Entrer une date de début valide."
    Else
        If Not IsDate(TextBox2) Then
            MsgBox "Entrer une date de fin valide."
        Else
            DateDébut = CDate(TextBox1)
            DateFin = CDate(TextBox2)
            ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=3, _
                Criteria1:=">=" & DateDébut, Operator:=xlAnd, Criteria2:="<=" & DateFin
        End If
    End If
End Sub
 
Dernière édition:

modus57

XLDnaute Occasionnel
Bonjour,

Hé bien puisque je n'ai pas eu de réponse, après avoir fouiné voici la solution que j'ai trouvé pour celle ou celui que cela peut intéressé :
VB:
Private Sub CommandButton1_Click()
  Dim DLig As Long, StartDate As Long, EndDate As Long

  Application.ScreenUpdating = False
  With Sheets("Feuil1")
    .Activate
    ' Trouver la dernière ligne du tableau
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Vérifier le filtre auto
    If .FilterMode = False Then
      .Range("A1:C1").AutoFilter
    Else
      ' Supprimer le filtre sur les dates (au cas ou)
      .Range("A1:C1").AutoFilter Field:=3
    End If
    ' Fourchette de date
    StartDate = DateValue(TextBox1)
    EndDate = DateValue(TextBox2)
    ' Filtrage des dates selon leur numéro de série
    .Range("A1:C1").AutoFilter Field:=3, Criteria1:=">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate
  End With
  Application.ScreenUpdating = True
End Sub
Ceci dit, si on utilise l'enregistreur voilà la macro obtenue :
Code:
    ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=3, Criteria1:=">=07-05-2008", Operator:=xlAnd, Criteria2:="<=20-05-2010"
Si on lance cette macro ça ne filtre rien ??

Merci quand même.
 

Discussions similaires

Statistiques des forums

Discussions
312 100
Messages
2 085 293
Membres
102 853
dernier inscrit
jetstream69