filtrer en fonction des dates entrées dans une textbox

ana12

XLDnaute Nouveau
Bonjour,

Je sollicite votre aide pour l'utilisation des TextBox.
En effet je souhaite supprimer des lignes dans une base de donnée en fonction de leur date.
Pour cela on demande à l'utilisateur d'entrer une date de début et une date de fin (par l'intermediaire d'une textbox) puis on supprime les lignes dont les dates sont comprises entre la date de début et la date de fin.
J'ai compris comment supprimer des lignes lorsqu'elles contiennent la valeur de la textbox (un mot ou un numéro) mais cela ne marche pas lorsque je rentre une date.

Pour l'instant j'en suis la:

Private Sub CommandButton1_Click()

Dim rng As Range
Dim tx As String
If TextBox1 = "" Then Exit Sub
tx = TextBox1.Value
TextBox1.Value = Format(TextBox1.Value, "dd/mm/yyyy")
Do
Set rng = Sheets("DTE1").Range("A:AS").Find(tx)
If rng Is Nothing Then
Exit Do
Else
Sheets("DTE1").Rows(rng.Row).Delete
End If
Loop
Unload Me
End Sub

Je vous remercie d'avance pour votre aide.
 

youky(BJ)

XLDnaute Barbatruc
Re : filtrer en fonction des dates entrées dans une textbox

Bonjour Ana,
Bienvenu pour le 1er poste,
tx=Cdate(TextBox1)
Un petit fichier est plus parlant voici un exemple sur col A
Bruno
 

Pièces jointes

  • AnaDate.xls
    43.5 KB · Affichages: 69
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : filtrer en fonction des dates entrées dans une textbox

Bonjour à tous


Un petit exemple avec l'emploi du filtre automatique
Pré-requis pour tester:
Insérer Un Userform (avec dexu TextBox (nommés TextBox1 et TextBox2) et un CommandButton1 dans un classeur vierge.
et coller dans le VBA de l'userform les codes suivants:
Code VBA:
Private Sub CommandButton1_Click()
Dim DD&, DF&
DD = CLng(DateValue(TextBox1) * 1): DF = CLng(DateValue(TextBox2) * 1)
[A1:A47].AutoFilter Field:=1, Criteria1:=">" & DD, Operator:=xlAnd, Criteria2:=">" & DF
End Sub




Code VBA:
Private Sub UserForm_Initialize()
'ici ce code ne sert qu'à crééer les données pour tester
Range("A1") = "TEST"
Range("A2") = "1/1/2013"
Range("A2").DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlDay, Step:=1, Stop:=41320, Trend:=False
TextBox1 = "01/01/2013"
TextBox2 = "31/01/2013"
' A NE PAS UTILISER DANS LE CLASSEUR ORIGINAL
End Sub





PS: En cas d'utilisation in situ, il faudra adapter notamment la plage de cellules où appliquer le filtre
 

ana12

XLDnaute Nouveau
Re : filtrer en fonction des dates entrées dans une textbox

Re bonjour

j'ai adapté la solution de Staple1600 à mon fichier cela marche tres bien!

j'essaie à présent d'adapter cette méthode sans textbox, c'est à dire que les dates de début et de fin ne soient plus entré à la main dans les textbox mais qu'elles correspondent à la date mini et la date maxi d'une colonne d'un fichier.

Malheureusment je n'y arrive pas.

Je vous remercie d'avance pour votre aide
 

ana12

XLDnaute Nouveau
Re : filtrer en fonction des dates entrées dans une textbox

Merci!
c'est bon mon code marche sans text box en allant chercher les données min et max d'une autre colonne!
pour ceux qui aurait le meme probleme voici mon code:

Sub supprimer()

Sheets("12Février").Activate

Dim MyRange As Range, Reponse As String
With Sheets("12Février")
Set MyRange = Sheets("12Février").Range("L2:L" & .Range("L65536").End(xlUp).Row)
Reponse1 = CDate(Application.WorksheetFunction.Max(MyRange))
Reponse2 = CDate(Application.WorksheetFunction.Min(MyRange))
MsgBox "la valeur max est " & Reponse1 & " et la valeur min est " & Reponse2
End With

Sheets("8Février").Activate
Dim k
For k = [A65536].End(xlUp).Row To 2 Step -1 'du bas en haut
If Cells(k, 12) >= CDate(Application.WorksheetFunction.Min(MyRange)) And Cells(k, 12) <= CDate(Application.WorksheetFunction.Max(MyRange)) Then Rows(k).Delete
Next

End Sub

bonne journée!
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 508
Messages
2 089 143
Membres
104 049
dernier inscrit
Xavier.L