Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

pierrejean

XLDnaute Barbatruc
Re : Controle de dates dans une macro

bonjour fab117

Salut Gilles

bonjour à tous

@Fab

Veux-tu tester cela
 

Pièces jointes

  • Essai.xls
    33.5 KB · Affichages: 39
  • Essai.xls
    33.5 KB · Affichages: 31
  • Essai.xls
    33.5 KB · Affichages: 29

pierrejean

XLDnaute Barbatruc
Re : Controle de dates dans une macro

re

teste cela

ps: pas compris : la condition "" pour sortir de la boucle !!!!
 

Pièces jointes

  • Essai01.xls
    35 KB · Affichages: 32
  • Essai01.xls
    35 KB · Affichages: 28
  • Essai01.xls
    35 KB · Affichages: 32

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…