Bonjour à tous,
L'idée de base est un code VBA pour une plage donnée qui si une des cellules est non vide il force les majuscule et colorie la case en gris mais il doit faire une exception pour les textes suivants "M", "S", "M." ou "S." si une case à un de ces quatre texte la il force toujours les majuscule mais ne colore pas la case.
Ci-dessous le code qui fonctionne mais je ne vois pas comment gérer les quatre exceptions.
Je précise la plage de cellule contient des cellules fusionnées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Dim cell As Range ' Spécifiez la plage à surveiller (C12:T377) Set rng = Me.Range("C12:T377") ' Vérifiez si la modification a eu lieu dans la plage surveillée If Not Intersect(Target, rng) Is Nothing Then Application.EnableEvents = False ' Désactive les événements pour éviter une boucle infinie On Error Resume Next ' Gère les erreurs si des cellules vides sont rencontrées For Each cell In Target If cell.value <> "" Then cell.value = UCase(cell.value) ' Convertit le texte en majuscules cell.Interior.Color = RGB(192, 192, 192) ' Gris Else cell.Interior.ColorIndex = xlNone ' Efface la couleur de fond End If Next cell On Error GoTo 0 ' Réactive la gestion des erreurs Application.EnableEvents = True ' Réactive les événements End If End Sub
Si quelqu'un a une idée cela m'aiderai bien.
Merci.
Partager