Format Date TextBox VBA
Bonjour à tous,
Je cherche à imposer un format date particulier à une textbox.
Actuellement, mon code ressemble à ça:
Private Sub TextBox46_Change()
TextBox1.BackColor = &H80000005
End Sub
Private Sub Textbox46_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
TextBox46.BackColor = &H80000005
If InStr("0123456789", VBA.Chr(KeyAscii)) = 0 Then
KeyAscii = 0
TextBox46.BackColor = &HFF&
End If
End Sub
Private Sub Textbox46_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox46.Text) = 0 Then
GoTo Fin
End If
If Len(Replace(TextBox46.Text, "/", "")) <> 6 And Len(Replace(TextBox46.Text, "/", "")) <> 8 Then
GoTo ErreurSaisie
End If
If Len(TextBox46.Text) = 6 Then
If Right(TextBox46, 2) > 50 Then
TextBox46 = Left(TextBox46, 4) & 19 & Right(TextBox46, 2)
Else
TextBox46 = Left(TextBox46, 4) & 20 & Right(TextBox46, 2)
End If
End If
TextBox46.Text = Left(Replace(TextBox46.Text, "/", ""), 2) & "/" & Mid(Replace(TextBox46.Text, "/", ""), 3, 2) & "/" & Right(Replace(TextBox46.Text, "/", ""), 4)
TextBox46.MaxLength = 10
If Not IsDate(TextBox46.Value) Then
GoTo ErreurSaisie
End If
GoTo Fin
ErreurSaisie:
Cancel = True
With TextBox46
.BackColor = &HFF&
MsgBox "Date saisie incorrecte"
TextBox46.Text = Replace(TextBox46.Text, "/", "")
.SetFocus
.SelStart = 0
.SelLength = Len(TextBox46.Text)
End With
Fin:
End Sub
Ce que je souhaite, c'est avoir après validation de mon formulaire, un format date. Actuellement, ce qui est inscrit dans le formulaire n'est pas enregistré en format date. Cela me pose problème car le bon fonctionnement d'une formule nécessite un format.
Ensuite, je souhaite que mon format date apparaisse avec le style de l'exemple suivant : 22-déc.-15
Je vous remercie pour votre aide.
Bonjour Bessedela, bonjour le forum,
Sans ton fichier, le code passe mal...
Voilà comment je fais quand je veux renvoyer une date d'un contrôle vers une cellule sans inversion mois/jours et avec un format défini.
• Dans un premier temps, je sélectionne la colonne des cellules qui vont recevoir les dates et je lui applique le format désiré (dans mon exemple la colonne A).
• Ensuite je renvoie non pas la date mais le numéro de série de la date. Par exemple, j'ai tapé dans la Textbox1 la date 01/02/2017. À la validation des données sur le CommandButton1 de l'userForm j'ai ce code :
Private Sub CommandButton1_Click()
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim DS As Long 'déclare la variable DS (Date Série)
DL = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée Dl de la colonne A
DS = DateSerial(Year(Me.TextBox1.Value), Month(Me.TextBox1.Value), Day(Me.TextBox1.Value)) 'définit le numéro de série de la date de la TextBox1
Cells(DL + 1, "A").Value = DS 'renvoie la valeur de DS dans la cellule ligne DL + 1 colonne A
Unload Me 'vide et ferme l'userform en cours
End Sub
C'est du garanti 100%...
Merci ThauThème,
C'est en partie ce dont j'ai besoin. Sauf que je souhaite que la textbox1 modifie toujours la même case. Ce que je vais saisir via le formulaire doit modifier la cellule sans ajouter de ligne.
Merci pour ton aide