Macro sur recherche de date EXCEL

Résolu/Fermé
Signaler
-
 zeb -
Bonjour,

Je voudrais pouvoir à l'aide du boite de dialogue choisir une date et faire un tri sur celle ci

voici ma macro ,mais qui ne fonctionne pas je n'obtient rien

ma colonne avec les dates est la 4

merci

Sub daterec()
Dim Message, Titre, Default, MyValue

Titre = "Date de début:"
Default = "format: jj/mm/aaaa"
Message = "Entrez la date du début:"
dde = InputBox(Message, Titre, Default)

If dde = "" Then
MsgBox " Vous avez oublié mettre la date!"
Exit Sub
End If

Rows("5:5").Select
Selection.AutoFilter
Selection.AutoFilter Field:=4, Criteria1:=">=" & dde, Operator:=xlAnd

End Sub

Configuration: Windows Vista Internet Explorer 7.0

2 réponses

Messages postés
17336
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 janvier 2022
10 796
Bonjour,


Tu parles au début de faire unn tri, puis dans la macro tu crées un filtre...
C'est donc bien un filtre que tu souhaites faire et non un tri ? Avec comme critère "supérieur à la date entrée dans la boîte de dialogue" ?

Plusieurs remarques sur ta macro :

La vérif de la date : tu testes si l'utilisateur a laissé la boîte vide, mais ce n'est pas suffisant, il a peut être mis une date qui n'en est pas une (texte ou date erronée)...

Ensuite pour faire ton filtre, inutile de faire une sélection, comme toujours en vba. Les sélections sont inutiles et alourdissent le code.

Et enfin, les histoires de format... Les dates sont un gros problème en VBA car Excel attend des dates au format américain, et donc une date de type 05/01/09 (5 janvier) sera convertie en 01/05/09 (1er mai).
En principe il suffit de modifier le type de variable. Au lieu de Date, on met Double ou Long. Toi tu as carrément zappé ça !!
Dans ton cas, je n'ai pas mis Double car il faut tester la date... Donc ça ne fonctionnerait plus...

Bon, tu peux tester ce code (supposant que ta base de données commence en ligne 5, colonne A:

Sub daterec()
Dim Message, Titre, dde, réponse

Titre = "Date de début"
Message = "Entrez la date du début au format jj/mm/aaaa :"
dialogue: dde = InputBox(Message, Titre)

If dde <> Format(dde, "dd/mm/yyyy") Then
réponse = MsgBox("Votre date n'est pas valide! Recommencez ?", 4)
    If réponse = vbYes Then GoTo dialogue Else Exit Sub
End If

dde = Format(dde, "mm/dd/yyyy")

Worksheets("Feuil1").Range("A5").AutoFilter _
    Field:=4, _
    Criteria1:=">=" & dde

End Sub


m@rina
2
merci ça marche
0