Bonjour,
En modifiant un peu ton code :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Range("A2:B30")) Is Nothing Then
For Each c In Target
If c.Value = "AT" Then
Target.Interior.ColorIndex = 53
Target.Font.ColorIndex = 2
Else: Select Case UCase(c.Value)
Case Is = ""
Target.Interior.ColorIndex = 0
Case Is = "F"
Target.Interior.ColorIndex = 39
Case Is = "MAL"
Target.Interior.ColorIndex = 44
Case Is = "MAT"
Target.Interior.ColorIndex = 38
Case Is = "CA"
Target.Interior.ColorIndex = 37
Case Is = "CS"
Target.Interior.ColorIndex = 35
End Select
Target.Font.ColorIndex = 0
End If
Next
End If
End Sub
Effectivement si tu colles le code sous ThisWorkbook (efface ceux des feuilles), ça marchera dans toutes les feuilles du classeur. Si tu veux empêcher sur quelques feuilles on peu ajouter un filtre pour limiter l'exécution de la macro...
P.S : je ne comprends pas trop le code, j'imagine que tu fais des copier-coller de plages dans lesquelles tu n'as qu'une cellule "AT" ou "F" ou...
Si pas ça, alors la procédure doit être simplifiable...
Edit : Salut Dan,
Pour moi la boucle est utile, parce que le target comprend plusieurs cellules, mais faudrait voir le fichier...
Edit 2 : modif de mon code pour le placer dans Thisworkbook