VBA: Quand changement de valeur d'une cellule= VRAI
7 réponses
Emile63
Bonjour =E0 tous,
Sur des cellules non-contigues, que j'ai nomm=E9es: Ok_1,Ok_2,Ok_3,Ok_4,Ok_=
5, je cherche =E0 avoir VRAI, si l'une d'entre-elle change de contenu, avec=
l'=E9v=E9nementielle:
Private Sub Worksheet_Change(ByVal Target As Range)
......
Set Plg3 =3D Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, =
[Ok_5].Value)
If Not Plg3 Is Nothing Then
.......
End If
Je brode autour de ce "si", Malheureusement sans grand succ=E8s... :-(
Si quelqu'un pouvait me mettre sur la piste ?!
Je vous remercie d'avance pour votre sollicitude.
Meilleures salutations.
Emile
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DanielCo
Bonjjour, If Not Plg3 Is Nothing Then Target.Value = "VRAI" Cordialement. Daniel
Emile63 avait écrit le 12/10/2015 :
Bonjour à tous,
Sur des cellules non-contigues, que j'ai nommées: Ok_1,Ok_2,Ok_3,Ok_4,Ok_5, je cherche à avoir VRAI, si l'une d'entre-elle change de contenu, avec l'événementielle: Private Sub Worksheet_Change(ByVal Target As Range)
......
Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
If Not Plg3 Is Nothing Then ....... End If
Je brode autour de ce "si", Malheureusement sans grand succès... :-(
Si quelqu'un pouvait me mettre sur la piste ?!
Je vous remercie d'avance pour votre sollicitude. Meilleures salutations. Emile
Bonjjour,
If Not Plg3 Is Nothing Then Target.Value = "VRAI"
Cordialement.
Daniel
Emile63 avait écrit le 12/10/2015 :
Bonjour à tous,
Sur des cellules non-contigues, que j'ai nommées: Ok_1,Ok_2,Ok_3,Ok_4,Ok_5,
je cherche à avoir VRAI, si l'une d'entre-elle change de contenu, avec
l'événementielle: Private Sub Worksheet_Change(ByVal Target As Range)
......
Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value,
[Ok_5].Value)
If Not Plg3 Is Nothing Then
.......
End If
Je brode autour de ce "si", Malheureusement sans grand succès... :-(
Si quelqu'un pouvait me mettre sur la piste ?!
Je vous remercie d'avance pour votre sollicitude.
Meilleures salutations.
Emile
Bonjjour, If Not Plg3 Is Nothing Then Target.Value = "VRAI" Cordialement. Daniel
Emile63 avait écrit le 12/10/2015 :
Bonjour à tous,
Sur des cellules non-contigues, que j'ai nommées: Ok_1,Ok_2,Ok_3,Ok_4,Ok_5, je cherche à avoir VRAI, si l'une d'entre-elle change de contenu, avec l'événementielle: Private Sub Worksheet_Change(ByVal Target As Range)
......
Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
If Not Plg3 Is Nothing Then ....... End If
Je brode autour de ce "si", Malheureusement sans grand succès... :-(
Si quelqu'un pouvait me mettre sur la piste ?!
Je vous remercie d'avance pour votre sollicitude. Meilleures salutations. Emile
MichD
Bonjour,
Attention : Ce que tu veux passer c'est chacune de cellules comme objet "Range" et non pas la valeur des cellules. Regarde l'exemple... Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
Comme ceci :
'-------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5]))
Application.EnableEvents = False If Not Rg Is Nothing Then For Each C In Rg MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""." Next End If Application.EnableEvents = True
End Sub '--------------------------------------------
Bonjour,
Attention : Ce que tu veux passer c'est chacune de cellules comme objet "Range" et non
pas la valeur des cellules. Regarde l'exemple...
Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
Comme ceci :
'--------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5]))
Application.EnableEvents = False
If Not Rg Is Nothing Then
For Each C In Rg
MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""."
Next
End If
Application.EnableEvents = True
End Sub
'--------------------------------------------
Attention : Ce que tu veux passer c'est chacune de cellules comme objet "Range" et non pas la valeur des cellules. Regarde l'exemple... Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
Comme ceci :
'-------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5]))
Application.EnableEvents = False If Not Rg Is Nothing Then For Each C In Rg MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""." Next End If Application.EnableEvents = True
End Sub '--------------------------------------------
Emile63
Merci DanielCo pour le coup de main :-)
J'ai l'impression que mon problème démarre ici: Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
Car, que j'ai ou pas, un contenu dans l'une des cellules nommées, Plg3 re ste toujours sur "nothing" Du coup, mon If ne rentre jamais en VRAI
If Not Plg3 Is Nothing Then Target = [Ok_Ko].Find(Target).Offset(, 1).Value End If
Merci DanielCo pour le coup de main :-)
J'ai l'impression que mon problème démarre ici:
Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
Car, que j'ai ou pas, un contenu dans l'une des cellules nommées, Plg3 re ste toujours sur "nothing"
Du coup, mon If ne rentre jamais en VRAI
If Not Plg3 Is Nothing Then
Target = [Ok_Ko].Find(Target).Offset(, 1).Value
End If
J'ai l'impression que mon problème démarre ici: Set Plg3 = Union([Ok_1].Value, [Ok_2].Value, [Ok_3].Value, [Ok_4].Value, [Ok_5].Value)
Car, que j'ai ou pas, un contenu dans l'une des cellules nommées, Plg3 re ste toujours sur "nothing" Du coup, mon If ne rentre jamais en VRAI
If Not Plg3 Is Nothing Then Target = [Ok_Ko].Find(Target).Offset(, 1).Value End If
Emile63
Rebonjour à tous,
Merci MichD, tu m'as mis sur la piste. :-) Maintenant ça fonctionne mieux..
Set Plg3 = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5] )) If Not Plg3 Is Nothing Then Target = [Ok_Ko].Find(Target).Offset(, 1).Value
Quand je ne suis pas sur la plage Ok_1, 2, 3 etc.. il n'entre pas dans le " If" et quand je suis dessus, Oui. ;-) C'est mieux, mais dans l'absolu (de rapidité), je cherchais à ne pas en trer dans le "if" si les cellules regroupés dans "union" sont vides, d'ou "la valeur", mais qui ne fonctionnait pas.. Si on peu améliorer, tant mieux, sinon je prends comme ça. Encore merci et bonne après-midi, à vous.
Emile
Rebonjour à tous,
Merci MichD, tu m'as mis sur la piste. :-)
Maintenant ça fonctionne mieux..
Set Plg3 = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5] ))
If Not Plg3 Is Nothing Then Target = [Ok_Ko].Find(Target).Offset(, 1).Value
Quand je ne suis pas sur la plage Ok_1, 2, 3 etc.. il n'entre pas dans le " If" et quand je suis dessus, Oui. ;-)
C'est mieux, mais dans l'absolu (de rapidité), je cherchais à ne pas en trer dans le "if" si les cellules regroupés dans "union" sont vides, d'ou "la valeur", mais qui ne fonctionnait pas..
Si on peu améliorer, tant mieux, sinon je prends comme ça.
Encore merci et bonne après-midi, à vous.
Merci MichD, tu m'as mis sur la piste. :-) Maintenant ça fonctionne mieux..
Set Plg3 = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5] )) If Not Plg3 Is Nothing Then Target = [Ok_Ko].Find(Target).Offset(, 1).Value
Quand je ne suis pas sur la plage Ok_1, 2, 3 etc.. il n'entre pas dans le " If" et quand je suis dessus, Oui. ;-) C'est mieux, mais dans l'absolu (de rapidité), je cherchais à ne pas en trer dans le "if" si les cellules regroupés dans "union" sont vides, d'ou "la valeur", mais qui ne fonctionnait pas.. Si on peu améliorer, tant mieux, sinon je prends comme ça. Encore merci et bonne après-midi, à vous.
Emile
MichD
'---------------------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5]))
Application.EnableEvents = False If Not Rg Is Nothing Then If Application.CountIf(Rg, "<>") > 0 Then For Each C In Rg MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""." Next End If End If Application.EnableEvents = True
End Sub '----------------------------------------------------------------
'----------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5]))
Application.EnableEvents = False
If Not Rg Is Nothing Then
If Application.CountIf(Rg, "<>") > 0 Then
For Each C In Rg
MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""."
Next
End If
End If
Application.EnableEvents = True
End Sub
'----------------------------------------------------------------
'---------------------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5]))
Application.EnableEvents = False If Not Rg Is Nothing Then If Application.CountIf(Rg, "<>") > 0 Then For Each C In Rg MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""." Next End If End If Application.EnableEvents = True
End Sub '----------------------------------------------------------------
MichD
Si tu veux que cela s'applique seulement dans le cas où le contenu d'une ou plusieurs cellules contient l'expression "Vrai" :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5])) Application.EnableEvents = False If Not Rg Is Nothing Then If Application.CountIf(Rg, "<>VRAI") > 0 Then For Each C In Rg If UCase(C.Value) = "VRAI" Then MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""." End If Next End If End If Application.EnableEvents = True End Sub
Si tu veux que cela s'applique seulement dans le cas où le contenu d'une ou
plusieurs cellules contient l'expression "Vrai" :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5]))
Application.EnableEvents = False
If Not Rg Is Nothing Then
If Application.CountIf(Rg, "<>VRAI") > 0 Then
For Each C In Rg
If UCase(C.Value) = "VRAI" Then
MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""."
End If
Next
End If
End If
Application.EnableEvents = True
End Sub
Si tu veux que cela s'applique seulement dans le cas où le contenu d'une ou plusieurs cellules contient l'expression "Vrai" :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Union([Ok_1], [Ok_2], [Ok_3], [Ok_4], [Ok_5])) Application.EnableEvents = False If Not Rg Is Nothing Then If Application.CountIf(Rg, "<>VRAI") > 0 Then For Each C In Rg If UCase(C.Value) = "VRAI" Then MsgBox "la cellule """ & C.Address & """ est passée à ""VRAI""." End If Next End If End If Application.EnableEvents = True End Sub
Emile63
Re-bonjour MichD,
c'est tout bon, cette fois on à fait le tour de la question. Merci beaucoup. Cordialement, Emile
Re-bonjour MichD,
c'est tout bon, cette fois on à fait le tour de la question.
Merci beaucoup.
Cordialement,
Emile