Private Sub Worksheet_Change(ByVal Target As Range) Static titi As Boolean Dim toto As Date If titi Then titi = Not titi: Exit Sub If Not Intersect(Target, Range("A1")) Is Nothing Then If Not IsDate(Target.Text) Then alerte Target: Exit Sub Else toto = CDate(Target.Text) If Day(toto) <> Val(Target.Text) Then alerte Target: Exit Sub Else Select Case toto Case Is > Date toto = Date Case Is < Date - 14 toto = Date - 14 End Select titi = Not titi Target.NumberFormat = "dd/mm/yyyy" Target.Value = DateSerial(Year(toto), Month(toto), Day(toto)) End If End If End If End Sub Private Sub alerte(qui As Range) qui.Activate MsgBox "date non valide" End Sub
If Not Intersect(Target, Range("A1")) Is Nothing Then
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub Worksheet_Change(ByVal Target As Range) Dim valeur As Integer Déverrouillage If Range("A1").NumberFormat = "m/d/yyyy" Then Range("A1").NumberFormat = "General" End If Verrouillage If Not Application.Intersect(Range("A1"), Target) Is Nothing Then If Target.Address = "$A$1" Then Application.EnableEvents = False Texte = Target.Value valeur = Len(Target) Call MaMacro(valeur, Texte) Application.EnableEvents = True End If End If End Sub Private Sub MaMacro(valeur As Integer, Texte As Variant) If IsNumeric(Texte) Then If (valeur = 7) Then jour = 0 & CInt(Left(Texte, 1)) mois = CInt(Mid(Texte, 2, 2)) an = CInt(Right(Texte, 3)) ElseIf (valeur = 8) Then jour = CInt(Left(Texte, 2)) mois = CInt(Mid(Texte, 3, 2)) an = CInt(Right(Texte, 4)) Else End If Range("A1").Value = Format(CDate(jour & "/" & mois & "/" & an), "dd/mm/yyyy") Else Range("A1").Value = "" End If End Sub