Salut Ludwig, le Forum
Ce que tu peux faire dans un Control ActiveX de UserForm ou un ActiveX OLEObject sur feuille n'est pas forcément applicable à une cellule.
Dans ton cas l'évènement Change d'une TextBox ne réagit pas de la même manière (enfin plus exactement au même moment) que l'évènement "Worksheet_Change".
En effet le premier est inter-actif quand on tape, tandis que le second se déclenche à la sortie de la cellule...
Par conséquent, le code ci-dessus (qui vient de Ti si je ne m'abuse), n'est pas utilisable dans un cellule.
Ceci dit, il doit bien y avoir un moyen avec des Mid de faire construire ta syntax une fois que l'on est sorti de la cellule...
Exemple à mettre dans le Private Module de la Feuille en Question :
NB le format des cellule doit être le format "Standard"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TheString As String, TheDate As String
Dim Wrong As Boolean
If Wrong = False Then
If Not IsNumeric(Target.Value) Then Exit Sub
TheString = Target.Value
If Len(TheString) = 3 Then 'Format 0112 (le premier zéro est enlevé par Excel donc 3 digits)
TheDate = Mid(TheString, 1, 1) & "/" & Mid(TheString, 2, 3) & "/2002"
End If
If Len(TheString) = 4 Then
TheDate = Mid(TheString, 1, 2) & "/" & Mid(TheString, 3, 4) & "/2002"
End If
On Error GoTo ErrorHandler
Target.Value = CDate(TheDate)
End If
Exit Sub
ErrorHandler:
If Err = 13 Then Target = "": Target.Activate: Wrong = True
End Sub
Mais c'est "Just for the Fun", car tout dépend aussi du format des cellules (ici Standard pour que çà marche) Donc pour 3 caractères de moins à taper, je ne sais pas si çà en vaut la chandelle, car c'est très peu fiable.....
Bon Travail
@+Thierry