OVH Cloud OVH Cloud

lo po compri !!!

13 réponses
Avatar
Robert
Bonsoir tout le monde
Pourquoi donc cette procédure transforme t'elle 12 en 1,2 (jusque là je
comprends), mais aussi 125 en 1,25 au lieu de 12,5 (là, je comprends
plus : d'où ma question)
Private Sub Worksheet_Change(ByVal Target As Range)

If Range(Target.Address) > 10 Then Target = Range(Target.Address) / 10

End Sub

merci de l'explication si vous n'êtes pas largués comme moi.

Robert

3 réponses

1 2
Avatar
garnote
Salut Stéphane,

Tu nous avais pourtant déjà averti !
On n'écoute pas :-)

Serge


Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range
Set iSect = Intersect(Target, [a2:e100]) '***
If iSect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In iSect.Cells '***
If c.Value > 10 Then c = c / 10
Next
Application.EnableEvents = True
End Sub





















"LSteph" a écrit dans le message de news: %
Bonjour,

Voici deux autres possibilités (faut choisir)

pour prendre en compte les saisies sur cellules multiples...

'''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
dim c as range
Application.EnableEvents = False
For each c in target.cells
If c.value > 10 Then c = c / 10
next
Application.EnableEvents = True
End Sub
'''''''''

mais il serait bon aussi de limiter dans la feuille à la plage de cellules , qui seule soit sensée réagir à ce change, (exemple
a2:e100):

'''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range
Set iSect = Intersect(Target, [a2:e100])
If iSect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In iSect.Cells
If c.Value > 10 Then c = c / 10
Next
Application.EnableEvents = True
End Sub

'''''''''
'cdlt
'lSteph

Bonsoir tout le monde
Pourquoi donc cette procédure transforme t'elle 12 en 1,2 (jusque là je comprends), mais aussi 125 en 1,25 au lieu de 12,5 (là,
je comprends plus : d'où ma question)
Private Sub Worksheet_Change(ByVal Target As Range)

If Range(Target.Address) > 10 Then Target = Range(Target.Address) / 10

End Sub

merci de l'explication si vous n'êtes pas largués comme moi.

Robert




Avatar
garnote
Encore plus prudent :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range
Set iSect = Intersect(Target, [a2:e100])
If iSect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In iSect
If IsNumeric(c) And c > 10 Then c = c / 10
Next
Application.EnableEvents = True
End Sub

Serge


"LSteph" a écrit dans le message de news: %
Bonjour,

Voici deux autres possibilités (faut choisir)

pour prendre en compte les saisies sur cellules multiples...

'''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
dim c as range
Application.EnableEvents = False
For each c in target.cells
If c.value > 10 Then c = c / 10
next
Application.EnableEvents = True
End Sub
'''''''''

mais il serait bon aussi de limiter dans la feuille à la plage de cellules , qui seule soit sensée réagir à ce change, (exemple
a2:e100):

'''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range
Set iSect = Intersect(Target, [a2:e100])
If iSect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In iSect.Cells
If c.Value > 10 Then c = c / 10
Next
Application.EnableEvents = True
End Sub

'''''''''
'cdlt
'lSteph

Bonsoir tout le monde
Pourquoi donc cette procédure transforme t'elle 12 en 1,2 (jusque là je comprends), mais aussi 125 en 1,25 au lieu de 12,5 (là,
je comprends plus : d'où ma question)
Private Sub Worksheet_Change(ByVal Target As Range)

If Range(Target.Address) > 10 Then Target = Range(Target.Address) / 10

End Sub

merci de l'explication si vous n'êtes pas largués comme moi.

Robert




Avatar
LSteph
Bonjour Serge,

Tout à fait d'accord!

;-)

lSteph

Encore plus prudent :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range
Set iSect = Intersect(Target, [a2:e100])
If iSect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In iSect
If IsNumeric(c) And c > 10 Then c = c / 10
Next
Application.EnableEvents = True
End Sub

Serge


"LSteph" a écrit dans le message de news: %
Bonjour,

Voici deux autres possibilités (faut choisir)

pour prendre en compte les saisies sur cellules multiples...

'''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
dim c as range
Application.EnableEvents = False
For each c in target.cells
If c.value > 10 Then c = c / 10
next
Application.EnableEvents = True
End Sub
'''''''''

mais il serait bon aussi de limiter dans la feuille à la plage de cellules , qui seule soit sensée réagir à ce change, (exemple
a2:e100):

'''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range
Set iSect = Intersect(Target, [a2:e100])
If iSect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In iSect.Cells
If c.Value > 10 Then c = c / 10
Next
Application.EnableEvents = True
End Sub

'''''''''
'cdlt
'lSteph

Bonsoir tout le monde
Pourquoi donc cette procédure transforme t'elle 12 en 1,2 (jusque là je comprends), mais aussi 125 en 1,25 au lieu de 12,5 (là,
je comprends plus : d'où ma question)
Private Sub Worksheet_Change(ByVal Target As Range)

If Range(Target.Address) > 10 Then Target = Range(Target.Address) / 10

End Sub

merci de l'explication si vous n'êtes pas largués comme moi.

Robert








1 2