J'ai testé en recopiant le tableau A2:O8 sur 35 000 lignes.
Chez moi sue Win 11 Excel 2019 la macro s'exécute en 0,6 seconde c'est très acceptable.
Bonjour Job75,
J'ai répondu un peu vite sur le code proposé.
Mes remarques en gras ci dessous :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
For Each c In Range("H1:H" & Cells.SpecialCells(xlCellTypeLastCell).Row)
Set cc = Cells(c.Row, 2)
If Not IsEmpty(c) And InStr("
O>", UCase(Left(CStr(c), 1))) Then
'O> au lieu de > O
'Les > MP s'activent également même si je mets > O
If IsEmpty(cc) Then cc = "OK"
ElseIf UCase(CStr(cc)) = "OK" Then
cc = Empty
End If
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
J'ai modifié le code de cette façon
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
For Each c In Range("H1:H" & Cells.SpecialCells(xlCellTypeLastCell).Row)
Set cc = Cells(c.Row, 2)
If Not IsEmpty(c) And InStr("
> O", UCase(Left(CStr(c), 1))) Then
'
If IsEmpty(cc) Then cc = "OK"
ElseIf UCase(CStr(cc)) = "OK" Then
cc = Empty
End If
If Not IsEmpty(c) And InStr("
O", UCase(Left(CStr(c), 1))) Then
'
If IsEmpty(cc) Then cc = "OK"
ElseIf UCase(CStr(cc)) = "OK" Then
cc = Empty
End If
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
Malgré cela, comme précisé plus haut, La colonne B s'active en "OK" lorsque la colonne H comporte également > MP
J'ai l'impression que le code prend en compte uniquement > mais pas le O qui suit.
Drav