Inputbox avec date

Hello,

J'ai ce bout de code pour insérer une date dans une feuille. Si l'année ne fait que 3 caractères, il y a une erreur 1004. Est-ce que vous sauriez pourquoi? Je préfèrerais que ça demande de ressaisir la date.

Apparement, c'est là que ça plante :

Sheets(1).Range("G11") = Vdate

Merci d'avance pour le coup de main. :)

Sub test()

Dim FlgOK As Boolean, Vdate As Date, Rep As String

  Do

Rep = InputBox("Définir une date pour la livraison" & Chr(10) & Chr(10) & "JJ.MM.AAAA", "IMPORTANT")

If Rep = "" Then

     MsgBox "Annulé"
     Exit Sub

 End If

    On Error Resume Next

    Vdate = DateValue(Rep)
    FlgOK = (Err.Number = 0)
    On Error GoTo 0
    Loop Until FlgOK = True
    Sheets(1).Range("G11") = Vdate
    Sheets(1).Range("G11").NumberFormat = "dd mmmm yyyy"

End Sub

Bonsoir Manhalo, bonsoir le forum,

je ne sais pas comment tu fais mais si je tape une date avec des points (22.02.2022 par exemple), j'ai systématiquement une erreur ! J'ai donc adapté avec 22/02/2022.

Ce qui est fou c'est que s'il manque un chiffre à l'année (22/02/202 par exemple), ce ne soit pas la ligne Vdate = DateValue(Rep) qui plante mais plutôt Sheets(1).Range("G11") = Vdate. Là j'avoue que ça reste un mystère pour moi ?!... Visiblement Vdate = DateValue(Rep) ne génère pas d'erreur dans ce cas.

Peut-être une manière de contourner le problème :

Sub Macro1()
Dim FlgOK As Boolean, Vdate As Date, Rep As String
Do
ici:
    Rep = InputBox("Définir une date pour la livraison" & Chr(10) & Chr(10) & "JJ/MM/AAAA", "IMPORTANT")
    If Rep = "" Then
        MsgBox "Annulé"
        Exit Sub
    End If
    If Len(Rep) < 10 Then GoTo ici
    On Error Resume Next
    Vdate = CDate(Rep)
    FlgOK = (Err.Number = 0)
    On Error GoTo 0
Loop Until FlgOK = True
Sheets(1).Range("G11") = Vdate
Sheets(1).Range("G11").NumberFormat = "dd mmmm yyyy"
End Sub

Bonsoir,

DateVAlue : L’argument date requis est normalement une expression de chaîne représentant une date comprise entre le 1 janvier 100 et le 31 décembre 9999.
Donc 202 est supérieur à 100 donc valide...

Sinon il suffit de mettre l'inscription dans la boucle comme cela si cette dernière provoque une erreur c'est géré et on demande une fois de plus une date :

Sub test()
    Dim FlgOK As Boolean, Vdate, Rep As String
    Do
        Rep = InputBox("Définir une date pour la livraison" & Chr(10) & Chr(10) & "JJ.MM.AAAA", "IMPORTANT")
        If Rep = "" Then MsgBox "Annulé": Exit Sub
        On Error Resume Next
        Vdate = DateValue(Rep)
        Sheets(1).Range("G11").Value = Vdate
        Sheets(1).Range("G11").NumberFormat = "dd mmmm yyyy"
        FlgOK = (Err.Number = 0)
        On Error GoTo 0
    Loop Until FlgOK = True
End Sub

@ bientôt

LouReeD

Bonjour Thauthème et LouReeD,

Merci d'avoir pris le temps de regarder. :)

@Thauthème Bizarre, ça fonctionne bien avec les "." chez moi. Est-ce qu'il. s'agirait d'un paramétrage d'excel ou alors du fait d'être sur MAC et pas Windows? J'ai essayé ton adaptation, mais elle n'a pas corrigé le problème.

@LouReed Merci pour ces explications! Alors je ne comprends pas pourquoi ça plaque pour 202 par exemple. Dans tous les cas, ton ajout dans le code fonctionne divinement bien. Merci beaucoup!

Belle journée à vous!

Bonsoir,

merci pour vos remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "inputbox date"