Bonjour,
Yaka demander...
Coller la macro dans le module de la feuille concernée. (Clic droit sur l'onglet + Visualiser le code)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim L&, Y1 As Boolean, Y2 As Boolean, DY%, DM%, DD%
On Error GoTo GESTERR
Y1 = Target.Count = 1
Y2 = Target.FormatConditions.Count = 1
If Y1 And Y2 Then
If Target.FormatConditions(1).Formula1 = "=Spec" Then
L = Target.Value
If L < l0100 Then MsgBox "saisie invalide"
DY = Right(L, 2)
DM = Right((L - DY) / 100, 2)
DD = IIf(L > 91200, Left(L, 2), Left(L, 1))
Application.EnableEvents = False
Target = DateSerial(DY, DM, DD)
Application.EnableEvents = True
End If
End If
Exit Sub
GESTERR:
MsgBox "Erreur imprévue !"
Application.EnableEvents = True
End Sub
Bon, Yavait différentes manières d'aborder le problème. Dans ce cas il m'a semblé intéressant d'utiliser une astuce de Didier Fourgeot pour délimiter la plage concernée. (Target)
Sélectionner les cellules ou le format sera appliqué et affecter le Format conditionnel :
La formule est :
=Spec
... sans appliquer aucun format !
Tel quel le code ne s'applique qu'à une feuille, mais on peut l'étendre facilement à tout le classeur. (accepte les entrées sous la forme JJMMYY ou JMMYY)
A+