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

Controle de dates dans une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
K
Réponses
6
Affichages
3 K
N
Réponses
2
Affichages
2 K
N
B
Réponses
6
Affichages
1 K
C
Réponses
2
Affichages
2 K
C
J
Réponses
5
Affichages
4 K
jesustherockstar
J
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…