OVH Cloud OVH Cloud

trop compliqué pour moi

9 réponses
Avatar
eric.zzzz
Bonjour,
Je souhaire permettre la saisie uniquement =E0 =E0 l'int=E9rieur de la
plage A1:A10
Dans un module, j'ai le code suivant :
Sub PasTouche(LaCellule As Range, PlageAutoris=E9e As Range)
If Intersect(LaCellule, PlageAutoris=E9e) Is Nothing Then MsgBox "saisie
non autoris=E9e!"
Application.EnableEvents =3D False
Application.Undo
Application.EnableEvents =3D True
End Sub
Dans Thisworkbook, j'ai :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
PasTouche Target, Range("A1:A10")
End Sub

Lorsque je clique hors de laplage A1:A10, =E7a marche; mais lorsque je
veux saisir =E0 l'int=E9rieur de cette plage, la cellule se vide d=E8s que
j'ai valid=E9 la saisie. Comment faire ?
Meric pour votre aide.
Eric

9 réponses

Avatar
Jacky
Bonjour,
Je souhaire permettre la saisie uniquement à à l'intérieur de la plage
A1:A10
Ceci serait suffisant:


'---------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [A1:A10]) Is Nothing Then
MsgBox "saisie non autorisée!"
[a1].Select
End If
End Sub
'---------
--
Salutations
JJ

a écrit dans le message de news:

Bonjour,
Je souhaire permettre la saisie uniquement à à l'intérieur de la
plage A1:A10
Dans un module, j'ai le code suivant :
Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "saisie
non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub
Dans Thisworkbook, j'ai :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
PasTouche Target, Range("A1:A10")
End Sub

Lorsque je clique hors de laplage A1:A10, ça marche; mais lorsque je
veux saisir à l'intérieur de cette plage, la cellule se vide dès que
j'ai validé la saisie. Comment faire ?
Meric pour votre aide.
Eric


Avatar
Paul V
hello Eric,

Y a t il une raison à ne pas utiliser la protection de la feuille?

A+

Paul V

a écrit dans le message de news:

Bonjour,
Je souhaire permettre la saisie uniquement à à l'intérieur de la
plage A1:A10
Dans un module, j'ai le code suivant :
Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "saisie
non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub
Dans Thisworkbook, j'ai :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
PasTouche Target, Range("A1:A10")
End Sub

Lorsque je clique hors de laplage A1:A10, ça marche; mais lorsque je
veux saisir à l'intérieur de cette plage, la cellule se vide dès que
j'ai validé la saisie. Comment faire ?
Meric pour votre aide.
Eric
Avatar
Michel Gaboly
Bonjour,

If Then offre 2 possibilités :

1 - Tout sur une ligne :

If Condition Then Instruction

Seule "Instruction" est conditionnée par le If

Les lignes suivantes ne sont pas impactées.


2 - Au moins 3 lignes :

If Condition Then
Instruction(s) sur 1 ou plusieurs lignes
Else (facultatif)
Instruction(s) sur 1 ou plusieurs lignes
End If

S'il n'y a pas de Else, (et éventuellement de Else.If), toutes les
instructions situées entre If et End If ne sont exécutées que si
"Condition" est remplie.

En cas de Else, les instructions entre If et Else sont exécutées
si "Condition" est remplie, celles entre Else et End If sont
exécutées si "Condition" non remplie


Il faut donc modifier ainsi ta Sub :

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then
MsgBox "saisie non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

au lieu de

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "sa isie non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub

Avec la version actuelle, le Undo n'est pas impacté au If

Bonjour,
Je souhaire permettre la saisie uniquement à à l'intérieur de la
plage A1:A10
Dans un module, j'ai le code suivant :
Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "saisi e
non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub
Dans Thisworkbook, j'ai :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
PasTouche Target, Range("A1:A10")
End Sub

Lorsque je clique hors de laplage A1:A10, ça marche; mais lorsque je
veux saisir à l'intérieur de cette plage, la cellule se vide dès que
j'ai validé la saisie. Comment faire ?
Meric pour votre aide.
Eric




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
eric.zzzz

hello Eric,

Y a t il une raison à ne pas utiliser la protection de la feuille?

A+

Paul V


Bonne question. Mais je ne fais que des exercices...

Avatar
eric.zzzz

Bonjour,
Je souhaire permettre la saisie uniquement à à l'intérieur de la plage
A1:A10
Ceci serait suffisant:


'---------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [A1:A10]) Is Nothing Then
MsgBox "saisie non autorisée!"
[a1].Select
End If
End Sub
'---------


ça marche pas, la saisie se fait en dehors de A1:A10 malgrè le message



Avatar
eric.zzzz

Il faut donc modifier ainsi ta Sub :

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then
MsgBox "saisie non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

au lieu de

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "sa isie non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub



Là, ton explication est plus claire et ça marche.
J'avais pas compris ton post d'il y a 2 jours.
Merci

Avatar
Michel Gaboly
As-tu lu ma réponse de 12:20 ?

J'y expliquais pourquoi cela ne marchait pas et comment résoudre le pro blème.



Bonjour,
Je souhaire permettre la saisie uniquement à à l'intérieur de la plage
A1:A10
Ceci serait suffisant:


'---------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [A1:A10]) Is Nothing Then
MsgBox "saisie non autorisée!"
[a1].Select
End If
End Sub
'---------


ça marche pas, la saisie se fait en dehors de A1:A10 malgrè le mess age




--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Michel Gaboly
Désolé pour mon message précédent, celui-ci n'était pas encore apparu.

Je n'avais pas fait attention à l'émetteur. Pas rendu compte que c'é tait la même personne qu'il y a 2 joiurs.


Le principal que l'explication ait fini par passer ;-))




Il faut donc modifier ainsi ta Sub :

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then
MsgBox "saisie non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

au lieu de

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "saisie non autorisée!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub



Là, ton explication est plus claire et ça marche.
J'avais pas compris ton post d'il y a 2 jours.
Merci




--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Jacky
N'empêche que cela fonctionne très bien.......dans une feuille.
;-)
--
Salutations
JJ

"Michel Gaboly" a écrit dans le message de news:

As-tu lu ma réponse de 12:20 ?

J'y expliquais pourquoi cela ne marchait pas et comment résoudre le
problème.



Bonjour,
Je souhaire permettre la saisie uniquement à à l'intérieur de la plage
A1:A10
Ceci serait suffisant:


'---------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [A1:A10]) Is Nothing Then
MsgBox "saisie non autorisée!"
[a1].Select
End If
End Sub
'---------


ça marche pas, la saisie se fait en dehors de A1:A10 malgrè le message




--
Cordialement,

Michel Gaboly
www.gaboly.com