Bonjour chers développeurs,

SVP si quelqu'un pourra m'aider à rectifier ce code :

j'ai une checklist qui est composée de 5 étapes , pour chaque étape j'ai des critères à vérifier et pour chaque critère l'utilisateur est confronté à trois réponses :

O: Oui

N: Non

N :NA

Au début toutes les cases à cocher sont en rouge (O, N, NA) ,

et puis dans ces cases je désire que l'utilisateur ne coche qu'une seule case parmi les trois et que à chaque fois il change son choix la nouvelle case s'actualise et l'ancienne est écrasée.

Mais si la case N est cochée , la case Remarque doit se mettre en rouge (MFC)
Nom : 111.PNG
Affichages : 262
Taille : 5,9 Ko


Puis après si on remplit la remarque la case devient en blanc ( comme quoi c bon l'utilisateur a saisi la remarque seulement dans le cas ouu la réponse est N )
Nom : 112.PNG
Affichages : 268
Taille : 6,7 Ko


Le difficile c'est que Je veux que si l'utilisateur voit qu'il a mal placé sa réponse et que cette question , sa réponse n'était pas N mais NA ou bien O, je veux que le commentaire se supprime et que la case NA se coche facilement de nouveau et s'actualise
Nom : 113.PNG
Affichages : 274
Taille : 7,1 Ko

Le code VBA de la feuille est le suivant :
Code vba : 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
Dim TEST As Boolean 'déclare la variable TEST
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)
 
Set PL = Range("Etape1,Etape2,Etape3,Etape4,Etape5") 'définit la variabel PL
If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
If TEST = True Then TEST = False: Exit Sub 'si test est [Vrai], sort de la procédure
TEST = True 'définit la variable TEST
'si le changement a lieu ailleurs que dans la plage PL, sort de la procédure
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub
Cells(Target.Row, 4).Resize(1, 3).ClearContents 'efface les trois cellules de la ligne
Target.Value = "X" 'renvoie "X" dans la cellule
If Target.Column = 4 Or Target.Column = 6 Then Cells(Target.Row, 7).ClearContents
TEST = False 'redéfinit la variable TEST
End Sub

Le problème c'est que j'ai plusieurs mises en forme conditionnelle dans la feuille ce qui m'a perturbé et je n'ai pas pu réussir à réaliser le code correctement

Si vous pourriez vérifier la feuille Excel pour voir les mises en forme conditionnelle je vous serez très reconnaissante
essai.xlsm