Salut Eugène, le fil
Tu n'est pas sans savoir que l'évènement Change de ta Feuille se produit soit en appuyant sur "Entrée" soit sur "TAB" ou par code.
A part utiliser les API Windows je ne vois pas comment faire; Par contre si le fait de mettre en forme ta cellule après validation ne te gènes pas tu peux utiliser un code dans ce style. tu dois d'abord mettre un Label sur ta feuille.
Ensuite tu crée un module tu colles cette sub.
Sub CalculerLongueur(Entry As Range)
Static temp As String
Static temp1 As String: Dim i As Long
On Error Resume Next
With Worksheets("feuil1").Label1
If temp = Entry Then Exit Sub
For i = 1 To Len(Entry.Value)
.Caption = Left(Entry.Value, i)
temp = Left(Entry.Value, i - 1)
temp1 = Mid(Entry.Value, i, Len(Entry.Value))
If .Width > Entry.Width Then
Entry.Value = temp
Entry.Offset(1, 0).Value = temp1
Exit For
End If
Next
End With
temp = "": temp1 = ""
End Sub
Ensuite dans le code de ta feuille tu y place les deux Méthodes
Private Sub Worksheet_Activate()
With Worksheets("Feuil1")
.Label1 = "X"
.Label1.Visible = False
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
CalculerLongueur Target
End Sub