OVH Cloud OVH Cloud

Sur la feuille Excel empêcher si...

9 réponses
Avatar
Denys
Bonjour =E0 tous,

Je voudrais qu'il ne soit pas possible pour un usager d'=E9crire dans la
cellule B1 =E0 B15 si dans la cellule adjacente (soit A1 =E0 A15) il n'y
est pas inscrit la lettre Y.....

Je pr=E9sume que c'est dans le...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

que l'on doit commencer....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("B1:B15")
If ActiveCell.Offset(, -1).Value <> Y Then cell.Value =3D ""
Next cell
End Sub

Sauf que tout s'efface tout le temps..... Dans la plage A1:A15,
l'usager ne peut choisir qu'entre Y ou N avec une bande d=E9roulante
(Data Validation, List)

Ou est-ce que je me trompe ?

Merci

Denys

9 réponses

Avatar
MichDenis
Essaie ceci :


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range
Set Rg = Intersect(Range("A1:B15"), Target)
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each C In Rg
Select Case C.Column
Case 1
If UCase(C.Offset(, 1).Value) <> "Y" Then
C.Value = ""
End If
Case 2
If UCase(C.Value) <> "Y" Then
C.Offset(, -1).Value = ""
End If
End Select
Application.EnableEvents = True
Next
End If
End Sub




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

Bonjour à tous,

Je voudrais qu'il ne soit pas possible pour un usager d'écrire dans la
cellule B1 à B15 si dans la cellule adjacente (soit A1 à A15) il n'y
est pas inscrit la lettre Y.....

Je présume que c'est dans le...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

que l'on doit commencer....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("B1:B15")
If ActiveCell.Offset(, -1).Value <> Y Then cell.Value = ""
Next cell
End Sub

Sauf que tout s'efface tout le temps..... Dans la plage A1:A15,
l'usager ne peut choisir qu'entre Y ou N avec une bande déroulante
(Data Validation, List)

Ou est-ce que je me trompe ?

Merci

Denys
Avatar
RV
Bonsoir Denys,
Essayer peut-être ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For x=1 to 15
If cells(x,1).Value <> Y Then cells(x,2).Value = ""
Next x
End Sub

Bonne soirée
RV

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

Bonjour à tous,

Je voudrais qu'il ne soit pas possible pour un usager d'écrire dans la
cellule B1 à B15 si dans la cellule adjacente (soit A1 à A15) il n'y
est pas inscrit la lettre Y.....

Je présume que c'est dans le...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

que l'on doit commencer....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("B1:B15")
If ActiveCell.Offset(, -1).Value <> Y Then cell.Value = ""
Next cell
End Sub

Sauf que tout s'efface tout le temps..... Dans la plage A1:A15,
l'usager ne peut choisir qu'entre Y ou N avec une bande déroulante
(Data Validation, List)

Ou est-ce que je me trompe ?

Merci

Denys
Avatar
Michel Pierron
Bonsoir Denys;

With Target
If .Column <> 2 Then Exit Sub
If .Row > 15 Then Exit Sub
If .Offset(0, -1) <> "Y" Then
.Value = ""
.Offset(0, 1).Activate
End If

MP

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

Bonjour à tous,

Je voudrais qu'il ne soit pas possible pour un usager d'écrire dans la
cellule B1 à B15 si dans la cellule adjacente (soit A1 à A15) il n'y
est pas inscrit la lettre Y.....

Je présume que c'est dans le...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

que l'on doit commencer....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("B1:B15")
If ActiveCell.Offset(, -1).Value <> Y Then cell.Value = ""
Next cell
End Sub

Sauf que tout s'efface tout le temps..... Dans la plage A1:A15,
l'usager ne peut choisir qu'entre Y ou N avec une bande déroulante
(Data Validation, List)

Ou est-ce que je me trompe ?

Merci

Denys
Avatar
DesseJ
ou encore

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([B1:B15], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If Target.Offset(, -1).Value <> "Y" Then Target.Value = ""
Application.EnableEvents = True
End If
End Sub

Steph. D.
Avatar
RV
Denys,
J'ai oublié les guillemets et de traiter les majuscule et les minuscules
alors voici:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

For x = 1 To 15
If UCase(Cells(x, 1).Value) <> "Y" Then Cells(x, 2).Value = ""
Next x

End Sub

Cordialement
RV
"Denys" a écrit dans le message de news:

Bonjour à tous,

Je voudrais qu'il ne soit pas possible pour un usager d'écrire dans la
cellule B1 à B15 si dans la cellule adjacente (soit A1 à A15) il n'y
est pas inscrit la lettre Y.....

Je présume que c'est dans le...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

que l'on doit commencer....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("B1:B15")
If ActiveCell.Offset(, -1).Value <> Y Then cell.Value = ""
Next cell
End Sub

Sauf que tout s'efface tout le temps..... Dans la plage A1:A15,
l'usager ne peut choisir qu'entre Y ou N avec une bande déroulante
(Data Validation, List)

Ou est-ce que je me trompe ?

Merci

Denys
Avatar
Denys
Bonsoir à tous,

WOW!!!!! merci beaucoup..... tant de réponses en si peu de temps
!!!!

Très aimable, bonne fin de semaine, j'apprécie vraiment !!!

Denys
Avatar
JB
Bonsoir,

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A15"), Target) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
If UCase(Target.Offset(0, 1)) <> "Y" Then Target = Empty
Application.EnableEvents = True
End If
End Sub

JB

Bonjour à tous,

Je voudrais qu'il ne soit pas possible pour un usager d'écrire dans la
cellule B1 à B15 si dans la cellule adjacente (soit A1 à A15) il n'y
est pas inscrit la lettre Y.....

Je présume que c'est dans le...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

que l'on doit commencer....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("B1:B15")
If ActiveCell.Offset(, -1).Value <> Y Then cell.Value = ""
Next cell
End Sub

Sauf que tout s'efface tout le temps..... Dans la plage A1:A15,
l'usager ne peut choisir qu'entre Y ou N avec une bande déroulante
(Data Validation, List)

Ou est-ce que je me trompe ?

Merci

Denys


Avatar
lSteph
Bonsoir,
Donc si au moins une cellule dans la plage que l'on essaie de
sélectionner ne dispose pas d'un y inscrit dedans on est viré en a1.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set isect = Intersect(Target, [b1:b15])
If isect Is Nothing Then Exit Sub
For Each c In isect.Cells
If Not LCase(c.Offset(0, -1).Text) Like ("*y*") Then
[a1].Select
End If
Next
End Sub

'Cdlt.

'lSteph


Denys avait prétendu :
Bonjour à tous,

Je voudrais qu'il ne soit pas possible pour un usager d'écrire dans la
cellule B1 à B15 si dans la cellule adjacente (soit A1 à A15) il n'y
est pas inscrit la lettre Y.....

Je présume que c'est dans le...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

que l'on doit commencer....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("B1:B15")
If ActiveCell.Offset(, -1).Value <> Y Then cell.Value = ""
Next cell
End Sub

Sauf que tout s'efface tout le temps..... Dans la plage A1:A15,
l'usager ne peut choisir qu'entre Y ou N avec une bande déroulante
(Data Validation, List)

Ou est-ce que je me trompe ?

Merci

Denys


--
- -

Avatar
AV
Il me semble que....

Sélection de B1:B15 --> Données > Validation > Personnalisée > Formule :

¡="Y"

Décocher "Ignorer si vide" e

PS : Possibilité de mettre les messages d'alerte que l'on veut

AV