Controle de dates dans une macro

Fab117

XLDnaute Impliqué
Salut,
Dans mon fichier, je souhaite que l'utilisateur introduise une date au travers d'une InputBox.
Je souhaite que ma macro vérifie 3 erreurs possibles avant de valider cette date :
- Que la date ne tombe pas un samedi ou dimanche
- Qu'elle soit cohérente (pas de 31 février p. ex.)
- Qu'elle soit dans l'intervale 10 jours par rapport à la date du jour.

Quelqu'un pourrait-il m'aider à compléter ma macro ?

Merci d'avance.

Fab

Dim Message, Title, Default
Dim DateDePreparation As Date


Message = "Indiquez la date dans le format" & Chr(13) & "jj/mm/aa"
Title = "Date de préparation"
Default = "jj/mm/aa"
DateDePreparation = Application.InputBox(Message, Title, Default)

' Controle pour s'assurer que la date ne tombe pas un samedi ou un dimanche
If DateDePreparation = "" Then
Message = "Indiquez la date dans le format" & Chr(13) & "jj/mm/aa"
Title = "La date que vous avez entré correspond à un samedi ou un dimanche" & Chr(13) & "Confirmer votre choix en cliquant sur OK ou changer la date"
Default = DateDePreparation
DateDePreparation = Application.InputBox(Message, Title, Default)
' Controle que la date introduite est valide (p. ex. : pas le 31 février)
ElseIf DateDePreparation = "dfg" Then
Message = "Indiquez la date dans le format" & Chr(13) & "jj/mm/aa"
Title = "La date que vous avez entré n'existe pas, merci de corriger"
Default = DateDePreparation
DateDePreparation = Application.InputBox(Message, Title, Default)
' Controle que la date rentrée est dans l'intervale 10 jours par rapport à la date du jour
ElseIf DateDePreparation = "dfg" Then
Message = "Indiquez la date dans le format" & Chr(13) & "jj/mm/aa"
Title = "La date que vous avez entré est éloigné de plus de 10 jours par rapport à aujourd'hui" & Chr(13) & "Confirmer votre choix en cliquant sur OK ou changer la date"
Default = DateDePreparation
DateDePreparation = Application.InputBox(Message, Title, Default)
End If
 

Fab117

XLDnaute Impliqué
Re : Controle de dates dans une macro

Par rapport à mon problème de date dans le délai + ou - 10 jours, la raison était simple.
Avec ma condition :
If (CDate(DateDePreparation) - Date) > 10 Or (CDate(DateDePreparation) - Date) < 10 Then
Quelque soit le résultat, il était forcémment plus petit ou plus grand que 10.
Je m'en suis sorti en remplacant par :
If Int((CDate(DateDePreparation) - Date)) > 10 Then

Par contre, je suis toujours interressé par une proposition pour sortir de la boucle :
entree = InputBox(Message, Title, Default)
Do While Not IsDate(Replace(entree, ".", "/"))
entree = InputBox(Message, Title, Default)
Loop
DateDePreparation = CDate(Replace(entree, ".", "/"))
en tapant juste entrée.

De plus, si je mets une date plus éloignée que 10 jours ou qui tombe sur un week-end, il m'affiche la nouvelle InputBox avec le message adéquate. Si je clique sur annuler, il va quand même ouvrir l'autre fichier et y écrire FALSE.
Est-il possible de lui dire de sortir de la macro si la personne clique sur Annuler?

Fab
 

Discussions similaires

Statistiques des forums

Discussions
312 715
Messages
2 091 265
Membres
104 826
dernier inscrit
SOUSMANE