Dim maDate As String = "31/11/2009" If Not IsDate(maDate) Then Dim monJour As String = maDate.Substring(0, 2) Dim monMois As String = maDate.Substring(3, 2) Dim monAnnée As String = maDate.Substring(6, 4) Dim VraieDate As String If Val(monMois) < 1 And Val(monMois) > 12 Then ' Le mois n'est pas Ok ' Pas de vraie possibilité : impose 01 monMois = "01" End If If Val(monJour) < 1 Then monJour = "01" ElseIf Val(monJour) > 31 Then monJour = "31" End If VraieDate = monJour & "/" & monMois & "/" & monAnnée Do While Not IsDate(VraieDate) monJour = Format(Val(monJour) - 1, "00") VraieDate = monJour & "/" & monMois & "/" & monAnnée Loop maDate = VraieDate.ToString End If MsgBox(maDate)
Sub RendreDateInvalideEnDateValide(ByVal dateInvalide As String) While (IsDate(dateInvalide) = False) Dim dateValide() As String = Split(dateInvalide, "/") 'MessageBox.Show(dateValide(0)) dateValide(0) = dateValide(0) - 1 Dim dateComplete As String = Join(dateValide, "/") dateInvalide = dateComplete End While End Sub