OVH Cloud OVH Cloud

conditionnement sur saisie

2 réponses
Avatar
Chrisdolby
Bonjour,

j'ai une ligne comportant 18 cellules(D2;U2) contenant chacunes un chiffre
différent.
je souhaiterais que lorsque je change un chiffre dans une cellule par un
chiffre plus grand, tous les chiffres des cellules qui sont à gauche de
celle-ci augmentent de 1. De même, lorsque je change un chiffre dans une
cellule par un chiffre plus petit, je voudrais que tous les chiffres des
cellules à gauche de celle-ci diminuent de 1.

ex1: G2=8 devient G2=9 donc plage (D2;F2) +1
ex2: G2=8 devient G2=7 donc plage (D2;F2) -1

La plage de cellules concernées par le changement à la saisie étant (G2;U2),
faudra t-il faire une macro par cellule?

Merci pour vos lumières!

Chris

2 réponses

Avatar
JB
Bonjour,


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D2:U2], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If [mémo] <> "" Then
If Target <> CDbl([mémo]) Then
For i = 4 To Target.Column - 1
Cells(2, i) = Cells(2, i) + IIf(Target < CDbl([mémo]), -1,
1)
Next i
End If
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([D2:U2], Target) Is Nothing And Target.Count = 1
Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr( 34)
& Target.Value & Chr(34)
End If
End Sub

http://cjoint.com/?cqh3NGGkAH

Cordialement JB

On 16 fév, 02:50, Chrisdolby
wrote:
Bonjour,

j'ai une ligne comportant 18 cellules(D2;U2) contenant chacunes un chiffre
différent.
je souhaiterais que lorsque je change un chiffre dans une cellule par un
chiffre plus grand, tous les chiffres des cellules qui sont à gauche de
celle-ci augmentent de 1. De même, lorsque je change un chiffre dans une
cellule par un chiffre plus petit, je voudrais que tous les chiffres des
cellules à gauche de celle-ci diminuent de 1.

ex1: G2=8 devient G2=9 donc plage (D2;F2) +1
ex2: G2=8 devient G2=7 donc plage (D2;F2) -1

La plage de cellules concernées par le changement à la saisie étant (G2;U2),
faudra t-il faire une macro par cellule?

Merci pour vos lumières!

Chris


Avatar
Chrisdolby
Bonjour,

je tiens à vous remercier pour votre implication.
Ca marche nickel!

Chris


Bonjour,


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D2:U2], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If [mémo] <> "" Then
If Target <> CDbl([mémo]) Then
For i = 4 To Target.Column - 1
Cells(2, i) = Cells(2, i) + IIf(Target < CDbl([mémo]), -1,
1)
Next i
End If
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([D2:U2], Target) Is Nothing And Target.Count = 1
Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34)
& Target.Value & Chr(34)
End If
End Sub

http://cjoint.com/?cqh3NGGkAH

Cordialement JB

On 16 fév, 02:50, Chrisdolby
wrote:
Bonjour,

j'ai une ligne comportant 18 cellules(D2;U2) contenant chacunes un chiffre
différent.
je souhaiterais que lorsque je change un chiffre dans une cellule par un
chiffre plus grand, tous les chiffres des cellules qui sont à gauche de
celle-ci augmentent de 1. De même, lorsque je change un chiffre dans une
cellule par un chiffre plus petit, je voudrais que tous les chiffres des
cellules à gauche de celle-ci diminuent de 1.

ex1: G2=8 devient G2=9 donc plage (D2;F2) +1
ex2: G2=8 devient G2=7 donc plage (D2;F2) -1

La plage de cellules concernées par le changement à la saisie étant (G2;U2),
faudra t-il faire une macro par cellule?

Merci pour vos lumières!

Chris