Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

refuser suppression valeur

32 réponses
Avatar
j-pascal
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une bulle pour
informer l'utilisateur !) si les colonnes B et C (ie) de la ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP

10 réponses

1 2 3 4
Avatar
JB
Bonjour,

Si le curseur n'est pas DEPLACE après l'OUVERTURE du classeur, la
variable Modif_colA n'a pas de valeur. Il faut utiliser un nom de
champ qui est mémorisé à la sauvegarde du classeur.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a30]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If Cells(Target.Row, 2) <> "" Or Cells(Target.Row, 3) <> "" Then
Target = [mémo]
MsgBox "Interdit"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 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/?hzk3CTLkhT


JB


On 24 juil, 22:46, "Jacky" wrote:
Re....
Je te propose ceci:
'---------
Private ModifCol_A

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
Application.EnableEvents = False
If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <> "" T hen
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
ModifCol_A = Target
End If
End Sub
'----------
'A coller dans le module de la feuille en question

--
Salutations
JJ

"j-pascal" a écrit dans le message de news:




Bonsoir Jacky,

Merci.

Je n'avais certes pas pensé au menu donnée/validation ...
Mais dans ton exemple, (si je comprends bien) cela empêche de saisir une
valeur dans la colonne A si les colonnes B et C ne sont pas vides ... m ais
cela n'empêche pas l'utilisateur de supprimer la valeur de la colonne A !

(Autre) problème), les noms de la colonne A sont déjà récupér és par
"donnée/validation/liste" ;-(

@+ ?

JP

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

Le menu donnée/validation pourrait le faire
Sélection de la plage(commence en B2 pour l'exemple)
Donnée/validation
Autoriser==> personnalisé
Formule ==> ²&C2=""
Eventellement configurer les messages d'alerte
--
Salutations
JJ

"j-pascal" a écrit dans le message de news:
Ot6H%
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une bu lle
pour informer l'utilisateur !) si les colonnes B et C (ie) de la ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP- Masquer le texte des messages précédents -




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





Avatar
Jacky
Bonjour JB
Si le curseur n'est pas DEPLACE après l'OUVERTURE du classeur, la
variable Modif_colA n'a pas de valeur.


Merci de cette remarque, d'autant que tu me l'avais déjà faite dans une
autre proposition, et que mon (vieux) neurone ne l'a pas retenu.:-(

--
Salutations
JJ


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

Bonjour,

Si le curseur n'est pas DEPLACE après l'OUVERTURE du classeur, la
variable Modif_colA n'a pas de valeur. Il faut utiliser un nom de
champ qui est mémorisé à la sauvegarde du classeur.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a30]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If Cells(Target.Row, 2) <> "" Or Cells(Target.Row, 3) <> "" Then
Target = [mémo]
MsgBox "Interdit"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 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/?hzk3CTLkhT


JB


On 24 juil, 22:46, "Jacky" wrote:
Re....
Je te propose ceci:
'---------
Private ModifCol_A

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
Application.EnableEvents = False
If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
ModifCol_A = Target
End If
End Sub
'----------
'A coller dans le module de la feuille en question

--
Salutations
JJ

"j-pascal" a écrit dans le message de news:




Bonsoir Jacky,

Merci.

Je n'avais certes pas pensé au menu donnée/validation ...
Mais dans ton exemple, (si je comprends bien) cela empêche de saisir une
valeur dans la colonne A si les colonnes B et C ne sont pas vides ...
mais
cela n'empêche pas l'utilisateur de supprimer la valeur de la colonne A
!

(Autre) problème), les noms de la colonne A sont déjà récupérés par
"donnée/validation/liste" ;-(

@+ ?

JP

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

Le menu donnée/validation pourrait le faire
Sélection de la plage(commence en B2 pour l'exemple)
Donnée/validation
Autoriser==> personnalisé
Formule ==> ²&C2=""
Eventellement configurer les messages d'alerte
--
Salutations
JJ

"j-pascal" a écrit dans le message de news:
Ot6H%
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une bulle
pour informer l'utilisateur !) si les colonnes B et C (ie) de la ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP- Masquer le texte des messages précédents -




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





Avatar
JB
Bonjour,

Interdit la suppression en colonne A si B ou C contient une valeur:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a30]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If Cells(Target.Row, 2) <> "" Or Cells(Target.Row, 3) <> "" Then
Target = [mémo]
MsgBox "Interdit"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 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/?hzloZMe1Tq

JB

On 24 juil, 13:55, "j-pascal" wrote:
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une bulle pour
informer l'utilisateur !) si les colonnes B et C (ie) de la ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP


Avatar
Jacky
Re....
N'empêche pas la suppression/remplacement ou copier/coller par sélection
multiple....
:-(((

--
Salutations
JJ

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

Bonjour,

Si le curseur n'est pas DEPLACE après l'OUVERTURE du classeur, la
variable Modif_colA n'a pas de valeur. Il faut utiliser un nom de
champ qui est mémorisé à la sauvegarde du classeur.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a30]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If Cells(Target.Row, 2) <> "" Or Cells(Target.Row, 3) <> "" Then
Target = [mémo]
MsgBox "Interdit"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 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/?hzk3CTLkhT


JB


On 24 juil, 22:46, "Jacky" wrote:
Re....
Je te propose ceci:
'---------
Private ModifCol_A

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
Application.EnableEvents = False
If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
ModifCol_A = Target
End If
End Sub
'----------
'A coller dans le module de la feuille en question

--
Salutations
JJ

"j-pascal" a écrit dans le message de news:




Bonsoir Jacky,

Merci.

Je n'avais certes pas pensé au menu donnée/validation ...
Mais dans ton exemple, (si je comprends bien) cela empêche de saisir une
valeur dans la colonne A si les colonnes B et C ne sont pas vides ...
mais
cela n'empêche pas l'utilisateur de supprimer la valeur de la colonne A
!

(Autre) problème), les noms de la colonne A sont déjà récupérés par
"donnée/validation/liste" ;-(

@+ ?

JP

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

Le menu donnée/validation pourrait le faire
Sélection de la plage(commence en B2 pour l'exemple)
Donnée/validation
Autoriser==> personnalisé
Formule ==> ²&C2=""
Eventellement configurer les messages d'alerte
--
Salutations
JJ

"j-pascal" a écrit dans le message de news:
Ot6H%
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une bulle
pour informer l'utilisateur !) si les colonnes B et C (ie) de la ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP- Masquer le texte des messages précédents -




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





Avatar
j-pascal
Re,

"Jacky" a écrit dans le message de news:
%
Re...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait pas
de valeur sur la ligne correspondante.


Il me semble que le code proposé fait cela, non ??
voir ici
http://cjoint.com/?hzkpXnMcCM


Désolé, ça fonctionne effectivement très bien. J'avais fait l'essai dans un
classeur, mais je refaisais les saisies là où les colonnes B et C n'étaient
pas vides !! Trop bête ;-(

Merci beaucoup !

JP

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Merci Jacky,

Ca marche effectivement très bien pour empêcher la suppression des
valeurs
saisies dans la colonne A, mais je ne peux plus saisir de nouvelles
valeurs (dans cette même colonne A) !

L'idée, c'est qu'il y a une colonne (A) de noms. Ces noms sont
accessibles
par "donnée/validation/liste". En face de certains noms (sur la même
ligne), il y a des valeurs ...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait pas
de valeur sur la ligne correspondante.

Désolé de ne pas avoir été plus précis plus tôt ;-(

@+ ?

JP

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

Re....
Je te propose ceci:
'---------
Private ModifCol_A

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
Application.EnableEvents = False
If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
ModifCol_A = Target
End If
End Sub
'----------
'A coller dans le module de la feuille en question

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky,

Merci.

Je n'avais certes pas pensé au menu donnée/validation ...
Mais dans ton exemple, (si je comprends bien) cela empêche de saisir
une
valeur dans la colonne A si les colonnes B et C ne sont pas vides ...
mais cela n'empêche pas l'utilisateur de supprimer la valeur de la
colonne A !

(Autre) problème), les noms de la colonne A sont déjà récupérés par
"donnée/validation/liste" ;-(

@+ ?

JP

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

Le menu donnée/validation pourrait le faire
Sélection de la plage(commence en B2 pour l'exemple)
Donnée/validation
Autoriser==> personnalisé
Formule ==> ²&C2=""
Eventellement configurer les messages d'alerte
--
Salutations
JJ


"j-pascal" a écrit dans le message de news:
Ot6H%
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une
bulle
pour informer l'utilisateur !) si les colonnes B et C (ie) de la
ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP





















Avatar
j-pascal
Oups !

J'ai un msg indiquant "Nom ambigu..." j'ai déjà une "Worksheet_Change(ByVal
Target As Range)" dans la code de la feuille.
Est-il possible de les différencier ??

Tout est ici :

------------------------------------------------------------------------
Option Explicit
Dim reponse As Variant

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Count = 1 Then
With Target
If .NoteText = "" Then
reponse = InputBox("Commentaire?")
If reponse <> "" Then
.AddComment reponse & Chr(10) & "[" & Now() & "]"
With .Comment.Shape.OLEFormat.Object.Font
.Name = "Tverdana"
.Size = 8
.FontStyle = "Normal"
.ColorIndex = 3
End With
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End If
'Else
'.Comment.Delete
End If
End With
End If
Cancel = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
'Selection.Characters.Text = "Semaine du " & Range("F4")
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
'Range("D6").Select
Range("D6").Activate
End If
'Range("D6").Select
Range("D6").Activate
End Sub


Private ModifCol_A
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [c9:c250]) Is Nothing Then
Application.EnableEvents = False
If Range("f" & Target.Row) <> "" Or Range("m" & Target.Row) <> "" Then
Target = ModifCol_A
MsgBox "Modif. interdite"
'End If
End If
'Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
ModifCol_A = Target
End If
End Sub

------------------------------------------------------------------

Si j'osais ( ;-) ) je poserais une question subsidiaire ...
En fait dans mon classeur, le "test" ne porte pas sur le fait que les
colonnes B, C et D soient vides, mais sur la somme des valeurs des colonnes
F à M.
Je peux inscrire :
"If Range("f" & Target.Row) > 0 Or Range("g" & Target.Row) > 0 (etc jusqu'à
"m") Then"
mais ça me semble très lourd. Je peux faire référence à "Range ("f:m") mais
je ne sais pas comment adapter le "Target.Row" !!
Question : comment ajuster la formule pour que la suppression d'une valeur
de la colonne "c" soit impossible si le somme des valeurs de F à M est
positive ?

@+ ?

JP

"Jacky" a écrit dans le message de news:
%
Re...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait pas
de valeur sur la ligne correspondante.


Il me semble que le code proposé fait cela, non ??
voir ici
http://cjoint.com/?hzkpXnMcCM

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Merci Jacky,

Ca marche effectivement très bien pour empêcher la suppression des
valeurs
saisies dans la colonne A, mais je ne peux plus saisir de nouvelles
valeurs (dans cette même colonne A) !

L'idée, c'est qu'il y a une colonne (A) de noms. Ces noms sont
accessibles
par "donnée/validation/liste". En face de certains noms (sur la même
ligne), il y a des valeurs ...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait pas
de valeur sur la ligne correspondante.

Désolé de ne pas avoir été plus précis plus tôt ;-(

@+ ?

JP

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

Re....
Je te propose ceci:
'---------
Private ModifCol_A

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
Application.EnableEvents = False
If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
ModifCol_A = Target
End If
End Sub
'----------
'A coller dans le module de la feuille en question

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky,

Merci.

Je n'avais certes pas pensé au menu donnée/validation ...
Mais dans ton exemple, (si je comprends bien) cela empêche de saisir
une
valeur dans la colonne A si les colonnes B et C ne sont pas vides ...
mais cela n'empêche pas l'utilisateur de supprimer la valeur de la
colonne A !

(Autre) problème), les noms de la colonne A sont déjà récupérés par
"donnée/validation/liste" ;-(

@+ ?

JP

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

Le menu donnée/validation pourrait le faire
Sélection de la plage(commence en B2 pour l'exemple)
Donnée/validation
Autoriser==> personnalisé
Formule ==> ²&C2=""
Eventellement configurer les messages d'alerte
--
Salutations
JJ


"j-pascal" a écrit dans le message de news:
Ot6H%
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une
bulle
pour informer l'utilisateur !) si les colonnes B et C (ie) de la
ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP





















Avatar
Jacky
Re....
Est-il possible de les différencier ??
Non, il faudra te débrouiller de les mettre dans le même
"Worksheet_Change(ByVal Target As Range)"
Mais sans le fichier, il est difficile de voir.....
Si tu le souhaites, sur
http://www.cjoint.com/
A toi de voir.....

je ne sais pas comment adapter le "Target.Row" !!
'--------

If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) Then
'-------------

Le code avec la modif. de JB et adapté à ta plage
'------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
Application.EnableEvents = False
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) Then
Target = [ModifCol_A]
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
ActiveWorkbook.Names.Add Name:="ModifCol_A", RefersToR1C1:="=" & Chr(34)
& Target.Value & Chr(34)
End If
End Sub
'----------------------------------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Oups !

J'ai un msg indiquant "Nom ambigu..." j'ai déjà une
"Worksheet_Change(ByVal Target As Range)" dans la code de la feuille.
Est-il possible de les différencier ??

Tout est ici :

------------------------------------------------------------------------
Option Explicit
Dim reponse As Variant

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Count = 1 Then
With Target
If .NoteText = "" Then
reponse = InputBox("Commentaire?")
If reponse <> "" Then
.AddComment reponse & Chr(10) & "[" & Now() & "]"
With .Comment.Shape.OLEFormat.Object.Font
.Name = "Tverdana"
.Size = 8
.FontStyle = "Normal"
.ColorIndex = 3
End With
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End If
'Else
'.Comment.Delete
End If
End With
End If
Cancel = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
'Selection.Characters.Text = "Semaine du " & Range("F4")
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
'Range("D6").Select
Range("D6").Activate
End If
'Range("D6").Select
Range("D6").Activate
End Sub


Private ModifCol_A
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [c9:c250]) Is Nothing Then
Application.EnableEvents = False
If Range("f" & Target.Row) <> "" Or Range("m" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
'End If
End If
'Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
ModifCol_A = Target
End If
End Sub

------------------------------------------------------------------

Si j'osais ( ;-) ) je poserais une question subsidiaire ...
En fait dans mon classeur, le "test" ne porte pas sur le fait que les
colonnes B, C et D soient vides, mais sur la somme des valeurs des
colonnes F à M.
Je peux inscrire :
"If Range("f" & Target.Row) > 0 Or Range("g" & Target.Row) > 0 (etc
jusqu'à "m") Then"
mais ça me semble très lourd. Je peux faire référence à "Range ("f:m")
mais je ne sais pas comment adapter le "Target.Row" !!
Question : comment ajuster la formule pour que la suppression d'une valeur
de la colonne "c" soit impossible si le somme des valeurs de F à M est
positive ?

@+ ?

JP

"Jacky" a écrit dans le message de news:
%
Re...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir
supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait
pas
de valeur sur la ligne correspondante.


Il me semble que le code proposé fait cela, non ??
voir ici
http://cjoint.com/?hzkpXnMcCM

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Merci Jacky,

Ca marche effectivement très bien pour empêcher la suppression des
valeurs
saisies dans la colonne A, mais je ne peux plus saisir de nouvelles
valeurs (dans cette même colonne A) !

L'idée, c'est qu'il y a une colonne (A) de noms. Ces noms sont
accessibles
par "donnée/validation/liste". En face de certains noms (sur la même
ligne), il y a des valeurs ...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir
supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait
pas
de valeur sur la ligne correspondante.

Désolé de ne pas avoir été plus précis plus tôt ;-(

@+ ?

JP

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

Re....
Je te propose ceci:
'---------
Private ModifCol_A

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
Application.EnableEvents = False
If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
ModifCol_A = Target
End If
End Sub
'----------
'A coller dans le module de la feuille en question

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky,

Merci.

Je n'avais certes pas pensé au menu donnée/validation ...
Mais dans ton exemple, (si je comprends bien) cela empêche de saisir
une
valeur dans la colonne A si les colonnes B et C ne sont pas vides ...
mais cela n'empêche pas l'utilisateur de supprimer la valeur de la
colonne A !

(Autre) problème), les noms de la colonne A sont déjà récupérés par
"donnée/validation/liste" ;-(

@+ ?

JP

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

Le menu donnée/validation pourrait le faire
Sélection de la plage(commence en B2 pour l'exemple)
Donnée/validation
Autoriser==> personnalisé
Formule ==> ²&C2=""
Eventellement configurer les messages d'alerte
--
Salutations
JJ


"j-pascal" a écrit dans le message de news:
Ot6H%
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une
bulle
pour informer l'utilisateur !) si les colonnes B et C (ie) de la
ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP
























Avatar
j-pascal
Bonsoir Jacky,

(Merci pour la réponse à la question subsidiaire ;-) )

Non, il faudra te débrouiller de les mettre dans le même
"Worksheet_Change(ByVal Target As Range)"


J'ai modifié comme suit (et ça marche !) :

-----------------------------------------
'Option Explicit
Dim reponse As Variant
Private ModifCol_A

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Count = 1 Then
With Target
If .NoteText = "" Then
reponse = InputBox("Commentaire?")
If reponse <> "" Then
'.AddComment reponse & Chr(10) & "[" & Hour(Now) &
":" & Minute(Now) & "]"
'.AddComment reponse & Chr(10) & "[" & dd / mm /
yy(Now) & " - " & Hour(Now) & ":" & Minute(Now) & "]"
.AddComment reponse & Chr(10) & "[" & Now() & "]"
With .Comment.Shape.OLEFormat.Object.Font
.Name = "Tverdana"
.Size = 8
.FontStyle = "Normal"
.ColorIndex = 3
End With
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End If
'Else
'.Comment.Delete
End If
End With
End If
Cancel = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
ModifCol_A = Target
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

'----- ajout

If Not Intersect(Target, [c9:c250]) Is Nothing Then
Application.EnableEvents = False
'If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <>
"" Then
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Then
'If Range("n" & Target.Row) > 0 Then
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True

'----- fin

If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
'Selection.Characters.Text = "Semaine du " & Range("F4")
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
'Range("D6").Select
Range("D6").Activate
End If
End Sub
-----------------------------------------

Mais sans le fichier, il est difficile de voir.....

http://www.cjoint.com/


Trop lourd (12 Mo) et trop de données "confid."

je ne sais pas comment adapter le "Target.Row" !!
'--------

If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) Then
'-------------


(Re-merci)

Le code avec la modif. de JB et adapté à ta plage


Ca résout mon pb de réinitialisation d'affichage du bouton ?

Si oui, alors il faut que je le "bidouille" pour qu'il "ressemble" à celui
que je viens de te montrer afin que je gère le "nom ambigu" ....
(Je vois ça demain)
Bonne nuit ;-)

JP


'------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
Application.EnableEvents = False
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) Then
Target = [ModifCol_A]
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
ActiveWorkbook.Names.Add Name:="ModifCol_A", RefersToR1C1:="=" &
Chr(34) & Target.Value & Chr(34)
End If
End Sub
'----------------------------------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Oups !

J'ai un msg indiquant "Nom ambigu..." j'ai déjà une
"Worksheet_Change(ByVal Target As Range)" dans la code de la feuille.
Est-il possible de les différencier ??

Tout est ici :

------------------------------------------------------------------------
Option Explicit
Dim reponse As Variant

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Count = 1 Then
With Target
If .NoteText = "" Then
reponse = InputBox("Commentaire?")
If reponse <> "" Then
.AddComment reponse & Chr(10) & "[" & Now() & "]"
With .Comment.Shape.OLEFormat.Object.Font
.Name = "Tverdana"
.Size = 8
.FontStyle = "Normal"
.ColorIndex = 3
End With
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End If
'Else
'.Comment.Delete
End If
End With
End If
Cancel = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
'Selection.Characters.Text = "Semaine du " & Range("F4")
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
'Range("D6").Select
Range("D6").Activate
End If
'Range("D6").Select
Range("D6").Activate
End Sub


Private ModifCol_A
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [c9:c250]) Is Nothing Then
Application.EnableEvents = False
If Range("f" & Target.Row) <> "" Or Range("m" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
'End If
End If
'Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing Then
ModifCol_A = Target
End If
End Sub

------------------------------------------------------------------

Si j'osais ( ;-) ) je poserais une question subsidiaire ...
En fait dans mon classeur, le "test" ne porte pas sur le fait que les
colonnes B, C et D soient vides, mais sur la somme des valeurs des
colonnes F à M.
Je peux inscrire :
"If Range("f" & Target.Row) > 0 Or Range("g" & Target.Row) > 0 (etc
jusqu'à "m") Then"
mais ça me semble très lourd. Je peux faire référence à "Range ("f:m")
mais je ne sais pas comment adapter le "Target.Row" !!
Question : comment ajuster la formule pour que la suppression d'une
valeur de la colonne "c" soit impossible si le somme des valeurs de F à M
est positive ?

@+ ?

JP

"Jacky" a écrit dans le message de news:
%
Re...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir
supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait
pas
de valeur sur la ligne correspondante.


Il me semble que le code proposé fait cela, non ??
voir ici
http://cjoint.com/?hzkpXnMcCM

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Merci Jacky,

Ca marche effectivement très bien pour empêcher la suppression des
valeurs
saisies dans la colonne A, mais je ne peux plus saisir de nouvelles
valeurs (dans cette même colonne A) !

L'idée, c'est qu'il y a une colonne (A) de noms. Ces noms sont
accessibles
par "donnée/validation/liste". En face de certains noms (sur la même
ligne), il y a des valeurs ...
Je dois pouvoir ajouter des noms dans la liste. Je dois pouvoir
supprimer
des noms de cette même liste, mais à la seule condition qu'il n'y ait
pas
de valeur sur la ligne correspondante.

Désolé de ne pas avoir été plus précis plus tôt ;-(

@+ ?

JP

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

Re....
Je te propose ceci:
'---------
Private ModifCol_A

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
Application.EnableEvents = False
If Range("b" & Target.Row) <> "" Or Range("c" & Target.Row) <> ""
Then
Target = ModifCol_A
MsgBox "Modif. interdite"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a2:a5000]) Is Nothing Then ' a adapter
ModifCol_A = Target
End If
End Sub
'----------
'A coller dans le module de la feuille en question

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky,

Merci.

Je n'avais certes pas pensé au menu donnée/validation ...
Mais dans ton exemple, (si je comprends bien) cela empêche de saisir
une
valeur dans la colonne A si les colonnes B et C ne sont pas vides ...
mais cela n'empêche pas l'utilisateur de supprimer la valeur de la
colonne A !

(Autre) problème), les noms de la colonne A sont déjà récupérés par
"donnée/validation/liste" ;-(

@+ ?

JP

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

Le menu donnée/validation pourrait le faire
Sélection de la plage(commence en B2 pour l'exemple)
Donnée/validation
Autoriser==> personnalisé
Formule ==> ²&C2=""
Eventellement configurer les messages d'alerte
--
Salutations
JJ


"j-pascal" a écrit dans le message de
news:
Ot6H%
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une
bulle
pour informer l'utilisateur !) si les colonnes B et C (ie) de la
ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP




























Avatar
JB
Bonjour,

Avec message avertissement:

http://boisgontierjacques.free.fr/fichiers/Evenementiel/WorkSheetChangeMemo riseShape.xls

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a2:a30]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
If Cells(Target.Row, 2) <> "" Or Cells(Target.Row, 3) <> "" Then
Target = [mémo]
MsgBox "Interdit"
End If
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr( 34)
& Target.Value & Chr(34)
End If
If Cells(Target.Row, 2) <> "" Or Cells(Target.Row, 3) <> "" Then
On Error Resume Next
Shapes("monshape").Visible = True
If Err <> 0 Then creeShape: Target.Select
Shapes("monshape").Left = ActiveCell.Left
Shapes("monshape").Top = ActiveCell.Top + ActiveCell.Height + 3
Shapes("monshape").TextFrame.Characters.Text = "Sup interdit"
Else
On Error Resume Next
Shapes("monshape").Visible = False
End If
End Sub

Sub creeShape()
Shapes.AddTextbox(msoTextOrientationHorizontal, 1, 1, 50, 10).Select
Selection.Font.Name = "Verdana"
Selection.Font.Size = 7
Selection.Name = "monshape"
Shapes("monshape").Left = ActiveCell.Left
Shapes("monshape").Top = ActiveCell.Top + ActiveCell.Height + 3
End Sub


JB

On 24 juil, 13:55, "j-pascal" wrote:
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une bulle pour
informer l'utilisateur !) si les colonnes B et C (ie) de la ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP


Avatar
j-pascal
Bonjour,

Magnifique !

Mais si je reprends ton fichier joint (et sauf erreur de ma part),
si je tape "toto" en A15
si je tape "v" (ie) en B15
en C15, jai le Shape "Sup Interdit" (bien que toute saisie ou toute
suppression doit être possible au niveau des colonnes B et C !). Ce message
n'empêche pas la saisie ni la suppression des valeur mais il peut induire en
erreur.

(Pour info)
Dans mon fichier, la target est en colonne C, les saisies sont faites sur
les Colonnes P à AT et les colonnes évaluées (pour supprimer ou non les
valeurs de "C") sont F à M.

J'ai inséré le code pour l'affichage de mon "bouton", mais malgré plusieurs
essais, l'affichage ne se réinitialise pas !

Voici le code pour le Tri lancé à partir de ce bouton :

'-------------(début code Tri) ----------------------------

Sub TriPlageAtrier()

If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801

Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub

'----------------------(fin code Tri)---------------------------


Tout le code de ma page :

' ---------------------(début code Feuil)----------------------
'Option Explicit
Dim reponse As Variant
'Private ModifCol_A

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Count = 1 Then
With Target
If .NoteText = "" Then
reponse = InputBox("Commentaire?")
If reponse <> "" Then
'.AddComment reponse & Chr(10) & "[" & Hour(Now) &
":" & Minute(Now) & "]"
'.AddComment reponse & Chr(10) & "[" & dd / mm /
yy(Now) & " - " & Hour(Now) & ":" & Minute(Now) & "]"
.AddComment reponse & Chr(10) & "[" & Now() & "]"
With .Comment.Shape.OLEFormat.Object.Font
.Name = "Tverdana"
.Size = 8
.FontStyle = "Normal"
.ColorIndex = 3
End With
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End If
'Else
'.Comment.Delete
End If
End With
End If
Cancel = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c9:c250]) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
'If Cells(Target.Row, 2) <> "" Or Cells(Target.Row, 3) <> "" Then
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) >
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If
Application.EnableEvents = True

'----------------- ajout ---------------

If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("C9").Activate
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("C9").Activate
End If

' If Range("D6") = " >>>" Then
' ActiveSheet.Shapes("Button 98").Select
' Selection.Characters.Text = "TRIER ici"
' Range("D6").Select
' Else
' ActiveSheet.Shapes("Button 98").Select
' Selection.Characters.Text = "Liste Ok"
' End If

'----------------- fin ajout -----------------

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 And Target.Count = 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) &
Target.Value & Chr(34)
End If
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) > 0
Then
On Error Resume Next
Shapes("monshape").Visible = True
If Err <> 0 Then creeShape: Target.Select
Shapes("monshape").Left = ActiveCell.Left
Shapes("monshape").Top = ActiveCell.Top + ActiveCell.Height + 3
Shapes("monshape").TextFrame.Characters.Text = "Sup interdit"
Else
On Error Resume Next
Shapes("monshape").Visible = False
End If
End Sub

Sub creeShape()
Shapes.AddTextbox(msoTextOrientationHorizontal, 1, 1, 50, 10).Select
Selection.Font.Name = "Verdana"
Selection.Font.Size = 7
Selection.Name = "monshape"
Shapes("monshape").Left = ActiveCell.Left
Shapes("monshape").Top = ActiveCell.Top + ActiveCell.Height + 3
End Sub

'--------------------(fin code Feuil)------------------------------

Cordialement,

JP

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

Bonjour,

Avec message avertissement:

http://boisgontierjacques.free.fr/fichiers/Evenementiel/WorkSheetChangeMemoriseShape.xls

On 24 juil, 13:55, "j-pascal" wrote:
Bonjour,

Problème :

Dans la colonne A, j'ai des noms.

Est-il possible d'empêcher la suppression du nom (et d'avoir une bulle
pour
informer l'utilisateur !) si les colonnes B et C (ie) de la ligne
correspondante contiennent des valeurs non nulles ?

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP


1 2 3 4