Saisie obligatoire de date dans une inputbox

jim7963

XLDnaute Junior
Bonjour à tous,

je fais à nouveau appelle à vos lumières car je bute à nouveau sur un bout de code vba qui me permettrai d'ouvrir une inputbox pour faire saisir une date au format jj/mm/aaaa. Cette date se reporterait sur 2 cellules, chacune étant sur 2 feuilles différentes dans le même classeur.

Voici le code en question:

Dim aa
Do
aa = CDate(InputBox("Saisir la date de l'OD au format jj/mm/aaaa", _
"Date OD", Format("dd/mm/yyyy")))
If IsDate(aa) = False Then
MsgBox "Date obligatoire"
Loop Until IsDate(aa) = True
If IsDate(aa) Then Sheets("Compil").Range("M1").Value = CDate(aa)
If IsDate(aa) Then Sheets("OD").Range("B2").Value = CDate(aa)

Le problème se situe au niveau de la boucle puisqu'il me renvoi un message d'erreur "Boucle sans Do".
J'ai testé le code sans cette partie et ça fonctionne puisqu'il me renvoie bien ce que je saisie dans l'inputbox dans les cellules de destination.

Maintenant si je saisie n'importe quoi ou rien du tout dans l'inputbox je veux qu'il me renvoie un message d'erreur puis ouvre à nouveau l'inputbox pour forcer la personne à saisir une date correcte.

J'avoue qu'avec mon niveau débutant je sèche sur le problème.

Merci d'avance pour l'aide que vous pourrez m'apporter.
 

Pierrot93

XLDnaute Barbatruc
Re : Saisie obligatoire de date dans une inputbox

Bonjour,

manque un "end if" à priori :
Code:
Do
aa = CDate(InputBox("Saisir la date de l'OD au format jj/mm/aaaa", _
"Date OD", Format("dd/mm/yyyy")))
If IsDate(aa) = False Then
MsgBox "Date obligatoire"
End If
Loop Until IsDate(aa) = True
bon après midi
@+
 

Jam

XLDnaute Accro
Re : Saisie obligatoire de date dans une inputbox

Salut jim, Pierrot,

Pierrot, juste deux humbles petites remarques (dont une d’esthète concernant ton code), où je lui préfère la forme suivante et où il faut retirer le CDate() car sinon n'importe quelle suite de chiffre saisie - ou presque - peut être convertie en date:
VB:
Do
    aa = InputBox("Saisir la date de l'OD au format jj/mm/aaaa", _
        "Date OD", Format("dd/mm/yyyy"))
    If IsDate(aa) Then Exit Do
    MsgBox "Date obligatoire"
Loop


Bonne journée
 
Dernière édition:

Jam

XLDnaute Accro
Re : Saisie obligatoire de date dans une inputbox

Re,

J'me disais bien aussi qu'il y avait un truc qui clochait ;)

Sinon, faut rajouter (c'est une proposition) la ligne suivante avant le If IsDate():
VB:
    If Len(aa) = 0 Then Exit Sub

...sinon en cas de clic sur le bouton "Annuler" on boucle encore et toujours.
 

jim7963

XLDnaute Junior
Re : Saisie obligatoire de date dans une inputbox

Merci pour vos réponses.

Effectivement il manquait le End If, mais même en le rajoutant j'avais quand même une erreur.

Jam, j'ai testé ta première proposition de code en retirant le CDate et effectivement cela marche parfaitement.

Merci beaucoup pour votre aide.
 

Statistiques des forums

Discussions
312 176
Messages
2 085 962
Membres
103 066
dernier inscrit
bobfils