Bonjour,
J'ai un tableau avec des cellules qui ont une liste déroulante de choix.
Je souhaite pouvoir détecter un changement fait sur ce tableau et colorer la cellule modifiée en jaune. Pour cela j'utilise la fonction Worksheet_Change.
Cela donne :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Tab_insc As ListObject
Set Tab_insc = Sheets("Tableau inscription").ListObjects("Tab_inscription")
If Not Intersect(Target, Tab_insc.DataBodyRange) Is Nothing Then
If Tab_insc.DataBodyRange.Rows.Count = nb_ligne Then
If val <> Target.Value Then
Sheets("Tableau inscription").Cells(Target.Row, Target.Column).Interior.ColorIndex = 6
End If
Else
Tab_insc.DataBodyRange.Rows(Target.Row - Tab_insc.HeaderRowRange.Row).Interior.ColorIndex = 6
End If
End If
End Sub
Mon problème vient de la ligne :
If Not Intersect(Target, Tab_insc.DataBodyRange) Is Nothing Then
Lorsque je double clique sur une cellule avec liste déroulante de mon tableau (par exemple par mégarde) je peux modifier le contenu de la cellule.
Si je veux ensuite cliquer sur la flèche me permettant d'accéder à ma liste de choix (car je n'ai pas envie d'écrire dans la cellule mais choisir un choix proposé) la fonction Intersect est en erreur.
Lorsque je clique sur le bouton pour avoir ma liste de choix alors que j'étais au préalable en modification de la cellule via le double clique, la fonction Worsheet_Change se lance.
Il doit y avoir alors un soucis ou la "Target" doit être mauvaise. Auriez-vous une solution car je ne vois pas comment palier à ce problème?
Je met ci-joint un fichier d'exemple.
Pour constater le problème vous devez :
1. Double cliquer sur une cellule du tableau inscription contenant une liste déroulante.
2. Cliquer sur la flèche de la liste déroulante juste après.
Merci et bonne journée à tous!