Problème de format date d'un textbox à une cellule Excel
Bonjour.
Je rencontre un souci en VBA Excel.
J'ai trouvé sur un forum quelques lignes de codes qui me permettent de formater un textbox pour qu'on ne puisse y saisir qu'une date ...
Private Sub Textbox1_Change()
TextBox1.BackColor = &H80000005
End Sub
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
TextBox1.BackColor = &H80000005
If InStr("0123456789", VBA.Chr(KeyAscii)) = 0 Then
KeyAscii = 0
TextBox1.BackColor = &HFF&
End If
End Sub
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox1.Text) = 0 Then
GoTo Fin
End If
If Len(Replace(TextBox1.Text, "/", "")) <> 6 And Len(Replace(TextBox1.Text, "/", "")) <> 8 Then
GoTo ErreurSaisie
End If
If Len(TextBox1.Text) = 6 Then
If Right(TextBox1, 2) > 50 Then
TextBox1 = Left(TextBox1, 4) & 19 & Right(TextBox1, 2)
Else
TextBox1 = Left(TextBox1, 4) & 20 & Right(TextBox1, 2)
End If
End If
TextBox1.Text = Left(Replace(TextBox1.Text, "/", ""), 2) & "/" & Mid(Replace(TextBox1.Text, "/", ""), 3, 2) & "/" & Right(Replace(TextBox1.Text, "/", ""), 4)
TextBox1.MaxLength = 10
If Not IsDate(TextBox1.Value) Then
GoTo ErreurSaisie
End If
GoTo Fin
ErreurSaisie:
Cancel = True
With TextBox1
.BackColor = &HFF&
MsgBox "Date saisie incorrecte"
TextBox1.Text = Replace(TextBox1.Text, "/", "")
.SetFocus
.SelStart = 0
.SelLength = Len(TextBox1.Text)
End With
Fin:
End Sub
Private Sub NSaisie8_Enter()
NSaisie8.Text = Replace(NSaisie8.Text, "/", "")
NSaisie8.MaxLength = 8
End Sub
Cette partie là marche très bien ! J'ai bien un format date avec ajout des "/", vérification de la cohérence des dates (le 29 février n'est possible qu'en année bissextile ...) ... Bref c'est Top !
Sauf qu'ensuite, je valide avec un commandButton pour aller ecrire cette date dans une cellule de mon classeur excel. Sauf que quand j'écris dans ma cellule de cette manière :
Workbooks("IDEM_v1.xlsm").Sheets("Format_SISPO").Range("N2").Value = TextBox1.Value
Je me retrouve avec une date inversée par rapport à la date voulue (Mois et jour inversé ... le 07/01/2019 de mon textebox devient 01/07/2019 dans la cellule ...
J'ai l'impression que c'est la date de mon textbox qui est considérée comme anglaise, puisque la cellule de mon fichier Excel est bien au format dd/mm/yyyy. De plus, quand je traite cette date en ajoutant 27 jours ... je tombe sur le 28/07/2019 ...
Bref, comme d'hab, je suis un peu perdu dans la gestion des formats de dates, c'est pas mon fort ... Si vous avez une idée pour me dépanner, je suis preneur.
Merci de votre aide.
Onafe57
Bonjour
mettre CDate sur la textbox pour le format Date
Workbooks("IDEM_v1.xlsm").Sheets("Format_SISPO").Range("N2").Value = cdate(TextBox1.Value)
A+
Maurice
Super, ça marche.
Merci.
Bonjour
pense a valide
A+
Maurice