Gérer le résultat d'un inputbox

  • Initiateur de la discussion Initiateur de la discussion leroymh
  • 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 !

L

leroymh

Guest
Mon problème,

Dans un inputbox je veux gérer une date en sortie.

1) je déclare ma variable en date
2) je demande à l'utilisateur d'insérer une date au format (jj/mm/aaaa)
3) cette date est copiée dans une cellule ayant ce format.

Problème : comment gérer la saisie en cas d'erreur si l'utilisateur tape n'importe quoi sauf une date au format indiqué, où clicque sur annuler, où sur la croix de fenêtre ?

Merci d'avance
 
cette macro vba répond à votre souci, en cas d'erreur de saisie , une fois la valeur saisie la macro vérifie si la valeur est bien une date dans le cas contraire un message d'erreur apparaît et s 'affiche à nouveau l'inputbox


Public Sub testdate()
Dim l_sdateRetour As Variant

Question:
l_sdateRetour = InputBox("Quelle est la date ?", "test date :" & Format(Date, "dd/mm/yyyy"))
If Not IsDate(l_sdateRetour) Then MsgBox "Date Incorrecte", vbExclamation: GoTo Question
End Sub
 
Un exemple qui controle si la saisie est une date après la validation.

Sub test()
rep = InputBox("date")
On Error GoTo erreur
madate = CDate(rep)
MsgBox madate
Exit Sub
erreur:
MsgBox "Votre date est invalide."
End Sub
 
votre code informe simplement que la date est fausse, ma formule boucle tant que la date n'est pas correcte. ca peut servir si le reste de vos programmes dépendent de cette date

Public Sub testdate()
Dim l_sdateRetour As Variant

Question:
l_sdateRetour = InputBox("Quelle est la date ?", "test date :" & Format(Date, "dd/mm/yyyy"))
If Not IsDate(l_sdateRetour) Then MsgBox "Date Incorrecte", vbExclamation: GoTo Question
End Sub
 
Merci à cormier et sousou pour les exemples, les contrôles s'effectuent, mais le seul problème est le format de date en sortie.

Si l'utilisateur effectue une saisie correcte, c'est à dire (dd/mm/yyyy), le résultat inséré dans la cellule est au format (mm/dd/yyyy).

Question : Comment contrôler ou convertir convenablement cette date ?

Merci
 
Bonjour Marc, Jacques, Sousou et le Forum...

Je sais qu'il y a longtemps je me suis pris la tête avec une histoire comme çà avec "InputBox" ... vos deux exemples semblent parfais et je ne comprends par pourquoi Marc n'arraive pas à récupérer la date au format souhaitée... (Est simplement le format de Cellule à modifier?)

Dans la foulée je propose aussi une solution par UserForm

Un exemple pour avoir la date du jour dans une TextBox de UserForm...

Private Sub UserForm_Initialize()
TextBox1.Value = Format(Now(), "dd/mm/yyyy")
End Sub


Un exemple pour appliquer le format à la sortie de saisie avec un contrôle pour que la valeur soit bien une date grace à "CDate Function"...(comme sousous)

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo Message
TextBox2.Value = Format(TextBox2.Value, "dd/mm/yyyy")
TestedDate = CDate(TextBox2.Value)
Range("A1").NumberFormat = "dd/mm/yyyy"
Range("A1") = TestedDate
Exit Sub
Message:
MsgBox "la date saisie ne semble pas valide (JJ/MM/AAAA)", vbCritical, "Warning"
TextBox2.SetFocus
End Sub

Voilà je pense que c'est une autre solution, mais qui peut résoudre ton problème... Sinon si tu veux rester en "InputBox" tu insères simplement la ligne "Range("A1").NumberFormat = "dd/mm/yyyy"" dans l'un des deux codes que l'on t'a proposé ci-dessus.

Bonne Journées
@+Thierry
 
Merci de ton aide Thierry.

Je souhaite rester avec l'inputbox et je ne comprend pas la manip avec .Number Format.

Problème la variable déclarée en Variant récupère la saisie au format anglais (mm/dd/yyyy) dans une cellule dont le format est personnalisé (jj/mm/aaaa).


Merci d'avance.
 
Bon alors comme tu n'as pas l'air de me suivre... (même dans les ficelles !!)

soit avec le code de Jacques...

Public Sub testdate()
Dim l_sdateRetour As Variant
Question:
l_sdateRetour = InputBox("Quelle est la date ?", "test date :" & Format(Date, "dd/mm/yyyy"))
If Not IsDate(l_sdateRetour) Then MsgBox "Date Incorrecte", vbExclamation: GoTo Question
Range("A1").NumberFormat = "dd/mm/yyyy"
Range("A1") = l_sdateRetour
End Sub

soit avec le code de Sousou...

Sub test()
rep = InputBox("date")
On Error GoTo erreur
madate = CDate(rep)
Range("A1").NumberFormat = "dd/mm/yyyy"
Range("A1") = madate
Exit Sub
erreur:
MsgBox "Votre date est invalide."
End Sub

Cà devrait ne plus poser aucun problème......
non ?
@+Thierry
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
1 K
Retour