OVH Cloud OVH Cloud

conditionnement sur saisie 2

5 réponses
Avatar
Chrisdolby
Bonjour,

j'ai 2 plages de cellules (D3;U3) et (D8;U8). Je souhaiterais que lorsque je
saisie un chiffre plus grand que celui existant dans une des cellules de ma
première ligne (de D3 à U3), la cellule en dessous (entre D8 et U8) dans la
même colonne affiche 0 et les autres (entre D8 et U8) affiche chiffre +1.

ex: chiffre actuel en F3=4, je saisie 6 donc F3=6
alors F8=0 et toutes les autres cellules de D8 à U8=chiffre +1

Par ailleurs, il semblerait qu'il soit impossible d'annuler une saisie
lorsqu'elle est liée à une macro:existe t-il une solution pour pallier à une
erreur de frappe?

merci !

Chris

5 réponses

Avatar
Jacky
Bonsoir,

Essaie ceci:
'-----------
Public x
'_______________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
If Not Intersect(Target, [D3:U3]) Is Nothing Then
If Target.Value > x Then
For i = 4 To 21
Cells(8, i).Value = Cells(8, i).Value + 1
Next
Cells(8, Target.Column) = 0
x = Target.Value
End If
End If
End Sub

'________________________________________
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Target.Value
End Sub
'--------------

--
Salutations
JJ


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

j'ai 2 plages de cellules (D3;U3) et (D8;U8). Je souhaiterais que lorsque
je
saisie un chiffre plus grand que celui existant dans une des cellules de
ma
première ligne (de D3 à U3), la cellule en dessous (entre D8 et U8) dans
la
même colonne affiche 0 et les autres (entre D8 et U8) affiche chiffre +1.

ex: chiffre actuel en F3=4, je saisie 6 donc F3=6
alors F8=0 et toutes les autres cellules de D8 à U8=chiffre +1

Par ailleurs, il semblerait qu'il soit impossible d'annuler une saisie
lorsqu'elle est liée à une macro:existe t-il une solution pour pallier à
une
erreur de frappe?

merci !

Chris




Avatar
JB
Bonsoir,


http://cjoint.com/?cqtErmDpYv

Dim m, m2, m3
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D3:U3], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If [mémo] <> "" Then
If Target > CDbl([mémo]) Then
m = [D8:U8]
m2 = [mémo]
m3 = Target.Address
For i = 4 To 21
Cells(8, i) = Cells(8, i) + 1
Next i
Cells(8, Target.Column) = 0
End If
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([D3:U3], 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

Sub annule()
If m2 <> "" Then
[D8:U8] = m
Range(m3) = m2
m2 = ""
End If
End Sub

JB


On 16 fév, 19:11, "Jacky" wrote:
Bonsoir,

Essaie ceci:
'-----------
Public x
'_______________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
If Not Intersect(Target, [D3:U3]) Is Nothing Then
If Target.Value > x Then
For i = 4 To 21
Cells(8, i).Value = Cells(8, i).Value + 1
Next
Cells(8, Target.Column) = 0
x = Target.Value
End If
End If
End Sub

'________________________________________
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Target.Value
End Sub
'--------------

--
Salutations
JJ

"Chrisdolby" a écrit dans le mes sage
denews: F879E2A8-D059-4AE5-81AD-41D69DB9E__BEGIN_MASK_n#9g02mG7!__...__EN D_MASK_i?a63jfAD$



Bonjour,

j'ai 2 plages de cellules (D3;U3) et (D8;U8). Je souhaiterais que lorsq ue
je
saisie un chiffre plus grand que celui existant dans une des cellules de
ma
première ligne (de D3 à U3), la cellule en dessous (entre D8 et U8) dans
la
même colonne affiche 0 et les autres (entre D8 et U8) affiche chiffre +1.

ex: chiffre actuel en F3=4, je saisie 6 donc F3=6
alors F8=0 et toutes les autres cellules de D8 à U8=chiffr e +1

Par ailleurs, il semblerait qu'il soit impossible d'annuler une saisie
lorsqu'elle est liée à une macro:existe t-il une solution pour pall ier à
une
erreur de frappe?

merci !

Chris- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
JB
Bonsoir,

Si le curseur n'est pas déplacé à l'ouverture du classeur, la variable
x ne mémorise pas l'ancienne valeur. Elle sera égale à 0
En utilisant un nom, l'ancienne valeur de la cellule (où est située le
curseur ) est sauvegardée avec le classeur et donc restituée à
l'ouverture.

JB

,On 16 fév, 19:11, "Jacky" wrote:
Bonsoir,

Essaie ceci:
'-----------
Public x
'_______________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
If Not Intersect(Target, [D3:U3]) Is Nothing Then
If Target.Value > x Then
For i = 4 To 21
Cells(8, i).Value = Cells(8, i).Value + 1
Next
Cells(8, Target.Column) = 0
x = Target.Value
End If
End If
End Sub

'________________________________________
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Target.Value
End Sub
'--------------

--
Salutations
JJ

"Chrisdolby" a écrit dans le mes sage
denews: F879E2A8-D059-4AE5-81AD-41D69DB9E__BEGIN_MASK_n#9g02mG7!__...__EN D_MASK_i?a63jfAD$



Bonjour,

j'ai 2 plages de cellules (D3;U3) et (D8;U8). Je souhaiterais que lorsq ue
je
saisie un chiffre plus grand que celui existant dans une des cellules de
ma
première ligne (de D3 à U3), la cellule en dessous (entre D8 et U8) dans
la
même colonne affiche 0 et les autres (entre D8 et U8) affiche chiffre +1.

ex: chiffre actuel en F3=4, je saisie 6 donc F3=6
alors F8=0 et toutes les autres cellules de D8 à U8=chiffr e +1

Par ailleurs, il semblerait qu'il soit impossible d'annuler une saisie
lorsqu'elle est liée à une macro:existe t-il une solution pour pall ier à
une
erreur de frappe?

merci !

Chris- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Jacky
Bonjour JB

Merci d'avoir relevé cet obstacle.

Comme toujours, au top, JB


--
Salutations
JJ


"JB" a écrit dans le message de news:

Bonsoir,

Si le curseur n'est pas déplacé à l'ouverture du classeur, la variable
x ne mémorise pas l'ancienne valeur. Elle sera égale à 0
En utilisant un nom, l'ancienne valeur de la cellule (où est située le
curseur ) est sauvegardée avec le classeur et donc restituée à
l'ouverture.

JB

,On 16 fév, 19:11, "Jacky" wrote:
Bonsoir,

Essaie ceci:
'-----------
Public x
'_______________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
If Not Intersect(Target, [D3:U3]) Is Nothing Then
If Target.Value > x Then
For i = 4 To 21
Cells(8, i).Value = Cells(8, i).Value + 1
Next
Cells(8, Target.Column) = 0
x = Target.Value
End If
End If
End Sub

'________________________________________
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Target.Value
End Sub
'--------------

--
Salutations
JJ

"Chrisdolby" a écrit dans le
message
denews:
F879E2A8-D059-4AE5-81AD-41D69DB9E__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i?a63jfAD$



Bonjour,

j'ai 2 plages de cellules (D3;U3) et (D8;U8). Je souhaiterais que
lorsque
je
saisie un chiffre plus grand que celui existant dans une des cellules de
ma
première ligne (de D3 à U3), la cellule en dessous (entre D8 et U8) dans
la
même colonne affiche 0 et les autres (entre D8 et U8) affiche chiffre
+1.

ex: chiffre actuel en F3=4, je saisie 6 donc F3=6
alors F8=0 et toutes les autres cellules de D8 à U8=chiffre +1

Par ailleurs, il semblerait qu'il soit impossible d'annuler une saisie
lorsqu'elle est liée à une macro:existe t-il une solution pour pallier à
une
erreur de frappe?

merci !

Chris- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Chrisdolby
Bonjour

merci à vous deux!

ça fonctionne!

Chris


Bonjour JB

Merci d'avoir relevé cet obstacle.

Comme toujours, au top, JB


--
Salutations
JJ


"JB" a écrit dans le message de news:

Bonsoir,

Si le curseur n'est pas déplacé à l'ouverture du classeur, la variable
x ne mémorise pas l'ancienne valeur. Elle sera égale à 0
En utilisant un nom, l'ancienne valeur de la cellule (où est située le
curseur ) est sauvegardée avec le classeur et donc restituée à
l'ouverture.

JB

,On 16 fév, 19:11, "Jacky" wrote:
Bonsoir,

Essaie ceci:
'-----------
Public x
'_______________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
If Not Intersect(Target, [D3:U3]) Is Nothing Then
If Target.Value > x Then
For i = 4 To 21
Cells(8, i).Value = Cells(8, i).Value + 1
Next
Cells(8, Target.Column) = 0
x = Target.Value
End If
End If
End Sub

'________________________________________
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Target.Value
End Sub
'--------------

--
Salutations
JJ

"Chrisdolby" a écrit dans le
message
denews:
F879E2A8-D059-4AE5-81AD-41D69DB9E__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i?a63jfAD$



Bonjour,

j'ai 2 plages de cellules (D3;U3) et (D8;U8). Je souhaiterais que
lorsque
je
saisie un chiffre plus grand que celui existant dans une des cellules de
ma
première ligne (de D3 à U3), la cellule en dessous (entre D8 et U8) dans
la
même colonne affiche 0 et les autres (entre D8 et U8) affiche chiffre
+1.

ex: chiffre actuel en F3=4, je saisie 6 donc F3=6
alors F8=0 et toutes les autres cellules de D8 à U8=chiffre +1

Par ailleurs, il semblerait qu'il soit impossible d'annuler une saisie
lorsqu'elle est liée à une macro:existe t-il une solution pour pallier à
une
erreur de frappe?

merci !

Chris- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -