Worksheet_Change - Cellules disjointes

Bonjour,

Je souhaiterai modifier la couleur d'une cellule se situant sous la cellule qui a subit une modification. Pour cela l'évènement Worksheet_Change est exactement ce qu'il me faut.

Cependant avec celui-ci je ne peux observer qu'une plage de cellule, et comme les autres cellules que je souhaite observer se situe dans la même colonne que la première si je change une cellule entre les deux cela pose un problème.

Ci dessous (en fichier joint) une image pour mieux comprendre. En bleu la cellule qui déclenche l'évènement, en vert celle qui doit subir une modification grave a l'évènement.

Si je change B3 je veux que B4 se colorie, si je change B9 je veux que ce soit B10 mais si je modifie B7 il ne doit rien se passer.

De plus je ne peux pas créer plusieurs évènement Worksheet_Change du coup je voulais savoir si quelqu'un avait une solution pour "écouter" un changement sur plusieurs cellules ?

Merci de votre réponse.

sans titre

Bonjour

Essaie ce code à placer dans la feuille concernée

Private Sub Worksheet_Change(ByVal Target As Range)
'Dan le 04/09/14
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Interior.Pattern = xlNone Then Exit Sub
Target.Offset(1, 0).Interior.Color = vbgreen
End If
End Sub

Si ok, lors de ta réponse clique sur le V vert à coté du bouton EDITER pour cloturer le fil

Crdlt

Bonjour, salut Dan

Et si ta cellule Target n'est pas colorée (celles en bleu sur ton exemple)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3, B9,B15,B21")) Is Nothing And Target.Count = 1 Then
Target.Offset(1, 0).Interior.ColorIndex = 3
End If
End Sub

Cordialement

Bonjour Dan,

Merci beaucoup pour ta réponse. En effet cela fonctionne parfaitement, pour cet exemple-ci. Mais je l'avais mis pour illustrer seulement mon problème. Mais tu m'as donner une piste intéressante qui est de s'intéresser au caractère unique de ma cellule.

J'essaie de voir si je trouve quelque chose de mon coté.

Merci en tout cas.

Amadéus a écrit :

Bonjour, salut Dan

Et si ta cellule Target n'est pas colorée (celles en bleu sur ton exemple)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3, B9,B15,B21")) Is Nothing And Target.Count = 1 Then
Target.Offset(1, 0).Interior.ColorIndex = 3
End If
End Sub

Cordialement

Bonjour Amadéus,

Ta solution semble la plus adaptée. Cependant au lieu d'avoir Range("B3, B9,B15,B21") est ce que je peux avoir un Range avec des noms de cellules à l'intérieur. En effet mes cellules sont générées automatiquement et ne sont pas forcément à un endroit fixe. Du coup je leur ai donné des noms pour les identifier.

Parce que Range("_NA1_1,_NA1_2") ne fonctionne pas, ou _NAX_X est le nom des cellules que je veux surveiller

Par avance merci.

re,

Merci beaucoup pour ta réponse. En effet cela fonctionne parfaitement, pour cet exemple-ci. Mais je l'avais mis pour illustrer seulement mon problème.

Le mieux aurait été de donner un fichier représentatif

Es-tu de devoir définir les plages ?

Le code peut être simplifié si cela répond aux critéres de contenir une couleur ou pas dans la cellule modifiée.

Private Sub Worksheet_Change(ByVal Target As Range)
'Dan le 04/09/14
If Target.Interior.Pattern = xlNone Then Exit Sub
Target.Offset(1, 0).Interior.Color = vbGreen
End Sub

Cela suppose évidemment que tu ne modifies que la cellule située au dessus d'une cellule déjà en couleur

Crdlt

Rechercher des sujets similaires à "worksheet change disjointes"