Bonjour à tous,
J'utilise un formulaire de saisie pour alimenter une feuille excel.
Dans ce formulaire j'ai un certain nombre de champs DATE où la saisie est facilité par un masque de saisie.
Le problème est que lorsque l'utilisateur indique par exemple 12/12/19 dans la feuille excel, quand je filtre sur la colonne, cette date n'est pas regroupée par mois. Alors que si l'utilisateur saisi 12/12/2019 le regroupement par mois est effectif.
Je cherche donc à corriger cette erreur pour que le regroupement se fasse pour toute saisie que ce soit 19 ou 2019.
Mon idée est de récupérer les 2 derniers caractères du texbox ("19") pour les remplacer par "2019". Par contre je sèche sur la manupulation
Pourriez-vous m'aider svp ou peut être y a t il une manière de faire plus simple ?
Voici le code du textbox avec mon essai pour récupérer les derniers caractères :
Merci à tous.
Private Sub TB_PLUG_E1_AfterUpdate()
If TB_PLUG_E1.Value = "" Then Exit Sub
If Not IsDate(TB_PLUG_E1.Value) Then
MsgBox "La date saisie n'est pas au format jj/mm/aaaa", vbInformation, "Erreur date"
TB_PLUG_E1.Value = ""
End If
'Chaine = "/"
caractere = "/"
Positiondroite = Len(TB_PLUG_E1) - InStrRev(TB_PLUG_E1, caractere) + 1
If Not Positiondroite = 5 Then
Annee = "20" & Right(TB_PLUG_E1, Positiondroite - 1)
'TB_PLUG_E1=replace(TB_PLUG_E1
' MsgBox Len(TB_PLUG_E1) - Positiondroite
'Annee = Right(TB_PLUG_E1, Len(TB_PLUG_E1) - Positiondroite + 1)
MsgBox Annee
End If
End Sub
Private Sub TB_PLUG_E1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 8 Then
If Right(TB_PLUG_E1, 1) = "/" Then TB_PLUG_E1 = Mid(TB_PLUG_E1, 1, Len(TB_PLUG_E1) - 1)
End If
End Sub
Private Sub TB_PLUG_E1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'On limite la saisie aux caractères suivants : 1234567890/
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0
End Sub
Private Sub TB_PLUG_E1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case Len(TB_PLUG_E1.Text)
Case 2: If Val(TB_PLUG_E1.Value) > 31 Then TB_PLUG_E1.Value = "": MsgBox "Le jour est supérieur à 31" Else TB_PLUG_E1 = TB_PLUG_E1 & "/"
Case 5: If Mid(TB_PLUG_E1, 4, 2) > 12 Then TB_PLUG_E1.Value = Mid(TB_PLUG_E1, 1, 3): MsgBox "Le mois est supérieur à 12" Else TB_PLUG_E1 = TB_PLUG_E1 & "/"
Case 10: If Not IsDate(TB_PLUG_E1) Then MsgBox "Ceci n'est pas une date": TB_PLUG_E1 = ""
Case 11: TB_PLUG_E1 = Mid(TB_PLUG_E1, 1, 10)
End Select
End Sub