• Initiateur de la discussion Initiateur de la discussion bertgrav
  • Date de début Date de début

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 !

bertgrav

XLDnaute Occasionnel
bonjour,

j'ai créé un code avec une question sur 2 dates (date mini et maxi de recherche)

dim date1 as date
dim date2 as date
date1 = InputBox("indiquez la date mini de recherche")
date2 = InputBox("indiquez la date maxi de recherche")

puis le code .....

je voudrais faire un contrôle aprés ces 2 inputbox et vérifier que le format qui a été entré est bien du type 31/08/2006
si je fais une erreur de saisie, et que je valide, la macro se déroule et le résultat n'est absolument pas ce que je recherchais.

car si je tape un chiffre exemple 23 il me revoie la date 22/01/1900
et si tape une lettre il me donne une erreur.

ce contrôle pourrait se faire en injectant un msgbox aprés les 2 inputbox pour valider les dates ou autre chose.....

je séche un peu

merci de votre aide

chantal
 
Re : inputbox et date

salut bertgrav,

une solution (parmi des centaines) :
forcer la saisie avec un format particulier. ex. : 24/08/06.
Dans ce cas, il faut stocker le résultat du InputBox dans un String, à la rigueur un Variant, et faire les tests (longueur = 8 caractères, présence du / aux 3e et 6e caractère), puis éventuellement le transférer dans une variable Date.
 
Re : inputbox et date

à adapter, par exemple, pour afficher un message spécifique en fonction de l'erreur de format commise par l'utilisateur :
Code:
Sub ControleDate()
    Dim strDate1    As String
    Dim strDate2    As String
    Dim dteDate1    As Date
    Dim dteDate2    As Date
    
    Do
        strDate1 = InputBox("indiquez la date mini de recherche (jj/mm/aa)", "Date mini")
    Loop Until (Len(strDate1) = 8 And Mid(strDate1, 3, 1) = "/" And Mid(strDate1, 6, 1) = "/") Or strDate1 = ""
    dteDate1 = CDate(strDate1)
    
    Do
        strDate2 = InputBox("indiquez la date maxi de recherche (jj/mm/aa)", "Date maxi")
    Loop Until (Len(strDate2) = 8 And Mid(strDate2, 3, 1) = "/" And Mid(strDate2, 6, 1) = "/") Or strDate2 = ""
    dteDate2 = CDate(strDate2)
    
    ' le reste de ton traitement
    MsgBox "Date mini " & dteDate1 & vbLf & vbLf & "Date maxi " & dteDate2
 
- 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

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
358
Réponses
5
Affichages
914
Réponses
3
Affichages
430
J
Réponses
22
Affichages
3 K
jui42
J
Retour