Re Ya'v, Hello ChTi'160,
Vite fait sans tester :
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not Application.Intersect(Target, Range("D9:AM23")) Is Nothing Then
Range(DerCell).Value = UCase(Range(DerCell).Value)
End If
DerCell = Target.Address
End Sub
Le AvDerCell ne sert à rien ici, je l'avais mis pour remettre la cellule précédente sans couleur une fois que l'on change une deuxième fois (Je sais j'ai du mal à l'expliquer, mais bref on oublie AvDerCell).
Le DerCell est lui la cellule précédemment occupée donc tu dois le mémoriser avec le Target actuel après avoir fait tes changements.
Par ailleurs, si ton objectif est de mettre en majuscules la cellule quittée (c'est ce que je comprends en tous cas), pourquoi n'utilises-tu pas WorkSheet_Change qui lui te donne la cellule que tu viens de modifier dans le Target :
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Target.Value = UCase(Target.Value)
End Sub
A adapter avec ton histoire de Range("D9:AM23"). C'est bien plus simple et compréhensible.
Voilà, j'espère que c'est bien ce que tu veux.
Bon après-midi.
José