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 mes sage
n'empêche pas la saisie ni la suppression des valeur mais il peut indui re 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é p lusieurs
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:=xlTop ToBottom,
_
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 Th en
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:="=" & Ch r(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/WorkSheetChan...
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- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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 mes sage
n'empêche pas la saisie ni la suppression des valeur mais il peut indui re 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é p lusieurs
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:=False, Orientation:=xlTop ToBottom,
_
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 Th en
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:="=" & Ch r(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" <boisgont...@hotmail.com> a écrit dans le message de news:
1185428664.885105.115...@w3g2000hsg.googlegroups.com...
Bonjour,
Avec message avertissement:
http://boisgontierjacques.free.fr/fichiers/Evenementiel/WorkSheetChan...
On 24 juil, 13:55, "j-pascal" <nospam-j-pas...@free.fr> 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- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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 mes sage
n'empêche pas la saisie ni la suppression des valeur mais il peut indui re 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é p lusieurs
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:=xlTop ToBottom,
_
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 Th en
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:="=" & Ch r(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/WorkSheetChan...
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- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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/WorkSheetChan...
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- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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" <boisgont...@hotmail.com> a écrit dans le message de news:
1185428664.885105.115...@w3g2000hsg.googlegroups.com...
Bonjour,
Avec message avertissement:
http://boisgontierjacques.free.fr/fichiers/Evenementiel/WorkSheetChan...
On 24 juil, 13:55, "j-pascal" <nospam-j-pas...@free.fr> 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- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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/WorkSheetChan...
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- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Si toi tu as le mot de passe pour saisir dans la colonne,
tu ne vas pas supprimer les noms!
Sinon peut-être
protèger la feuille par macro avec userinterfaceonly
et prévoir l'entrée des données dans la colonne par macro exclusivement.
Enfin ce serait une hypothése...!
Cordialement.
lStephBonjour LSteph ;-)
Non !
cf stp la réponse que je viens de faire à Jacky. Je dois pouvoir saisir
des données dans cette colonne !
JP
"LSteph" a écrit dans le message de news:Bonsoir,
Protèger la feuille.
Cordialement
lStephBonjour,
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 ...
Bonjour,
Si toi tu as le mot de passe pour saisir dans la colonne,
tu ne vas pas supprimer les noms!
Sinon peut-être
protèger la feuille par macro avec userinterfaceonly
et prévoir l'entrée des données dans la colonne par macro exclusivement.
Enfin ce serait une hypothése...!
Cordialement.
lSteph
Bonjour LSteph ;-)
Non !
cf stp la réponse que je viens de faire à Jacky. Je dois pouvoir saisir
des données dans cette colonne !
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
u6lSAHjzHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Protèger la feuille.
Cordialement
lSteph
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 ...
Bonjour,
Si toi tu as le mot de passe pour saisir dans la colonne,
tu ne vas pas supprimer les noms!
Sinon peut-être
protèger la feuille par macro avec userinterfaceonly
et prévoir l'entrée des données dans la colonne par macro exclusivement.
Enfin ce serait une hypothése...!
Cordialement.
lStephBonjour LSteph ;-)
Non !
cf stp la réponse que je viens de faire à Jacky. Je dois pouvoir saisir
des données dans cette colonne !
JP
"LSteph" a écrit dans le message de news:Bonsoir,
Protèger la feuille.
Cordialement
lStephBonjour,
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 ...
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
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
OqGuwYszHHA.3400@TK2MSFTNGP03.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
%23EaV0QpzHHA.1208@TK2MSFTNGP03.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
u3EMhQozHHA.5772@TK2MSFTNGP02.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
uFpQ6OjzHHA.1188@TK2MSFTNGP04.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
uexOVQizHHA.4652@TK2MSFTNGP05.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
OT0%23FCgzHHA.2312@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
Ot6H%23lezHHA.4816@TK2MSFTNGP04.phx.gbl...
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
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
Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) >
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) >
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" <dupont@marrtin.fr> a écrit dans le message de news:
%23AbvhzuzHHA.1212@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
OqGuwYszHHA.3400@TK2MSFTNGP03.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
%23EaV0QpzHHA.1208@TK2MSFTNGP03.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
u3EMhQozHHA.5772@TK2MSFTNGP02.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
uFpQ6OjzHHA.1188@TK2MSFTNGP04.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
uexOVQizHHA.4652@TK2MSFTNGP05.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
OT0%23FCgzHHA.2312@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
Ot6H%23lezHHA.4816@TK2MSFTNGP04.phx.gbl...
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
Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) >
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu entres
interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count = 1
Then
ainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents =True",
il faudra enregistrer et relancer Excel. Comme les événements sont
désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu entres
interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count = 1
Then
ainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents =True",
il faudra enregistrer et relancer Excel. Comme les événements sont
désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de news:
eQsy0Oe0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" <dupont@marrtin.fr> a écrit dans le message de news:
%23AbvhzuzHHA.1212@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
OqGuwYszHHA.3400@TK2MSFTNGP03.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
%23EaV0QpzHHA.1208@TK2MSFTNGP03.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
u3EMhQozHHA.5772@TK2MSFTNGP02.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
uFpQ6OjzHHA.1188@TK2MSFTNGP04.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
uexOVQizHHA.4652@TK2MSFTNGP05.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
OT0%23FCgzHHA.2312@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
Ot6H%23lezHHA.4816@TK2MSFTNGP04.phx.gbl...
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
Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu entres
interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count = 1
Then
ainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents =True",
il faudra enregistrer et relancer Excel. Comme les événements sont
désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Re,
"Jacky" a écrit dans le message de news:
%23d0z$Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu
entres interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count =
1 Then
Cela me donne ça :
Private Sub Worksheet_Change(ByVal Target As Range)
'If Not Intersect(Target, [c9:c250]) Is Nothing And Target.Count = 1 Then
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
'If Target.Row > 8 And Target.Row < 251 Then 'ajout
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) >
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = Trueainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Désolé, je ne comprends pas ! Je ne vois pas où insérer la modif ;-( Le
code est là :
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
@+ ?
JP
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents
=True", il faudra enregistrer et relancer Excel. Comme les événements
sont désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Re,
"Jacky" <dupont@marrtin.fr> a écrit dans le message de news:
%23d0z$Cf0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu
entres interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count =
1 Then
Cela me donne ça :
Private Sub Worksheet_Change(ByVal Target As Range)
'If Not Intersect(Target, [c9:c250]) Is Nothing And Target.Count = 1 Then
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
'If Target.Row > 8 And Target.Row < 251 Then 'ajout
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) >
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = True
ainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Désolé, je ne comprends pas ! Je ne vois pas où insérer la modif ;-( Le
code est là :
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
@+ ?
JP
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents
=True", il faudra enregistrer et relancer Excel. Comme les événements
sont désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de news:
eQsy0Oe0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" <dupont@marrtin.fr> a écrit dans le message de news:
%23AbvhzuzHHA.1212@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
OqGuwYszHHA.3400@TK2MSFTNGP03.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
%23EaV0QpzHHA.1208@TK2MSFTNGP03.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
u3EMhQozHHA.5772@TK2MSFTNGP02.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
uFpQ6OjzHHA.1188@TK2MSFTNGP04.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
uexOVQizHHA.4652@TK2MSFTNGP05.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
OT0%23FCgzHHA.2312@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
Ot6H%23lezHHA.4816@TK2MSFTNGP04.phx.gbl...
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
Re,
"Jacky" a écrit dans le message de news:
%23d0z$Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu
entres interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count =
1 Then
Cela me donne ça :
Private Sub Worksheet_Change(ByVal Target As Range)
'If Not Intersect(Target, [c9:c250]) Is Nothing And Target.Count = 1 Then
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
'If Target.Row > 8 And Target.Row < 251 Then 'ajout
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row)) >
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = Trueainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Désolé, je ne comprends pas ! Je ne vois pas où insérer la modif ;-( Le
code est là :
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
@+ ?
JP
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents
=True", il faudra enregistrer et relancer Excel. Comme les événements
sont désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Re...
Je ne suis pas sur d'avoir compris ta demande, peux-tu remettre en ligne
un bout de ton fichier avec le résultat souhaité.
http://www.cjoint.com/
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Re,
"Jacky" a écrit dans le message de news:
%23d0z$Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu
entres interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count =
1 Then
Cela me donne ça :
Private Sub Worksheet_Change(ByVal Target As Range)
'If Not Intersect(Target, [c9:c250]) Is Nothing And Target.Count = 1 Then
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
'If Target.Row > 8 And Target.Row < 251 Then 'ajout
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = Trueainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Désolé, je ne comprends pas ! Je ne vois pas où insérer la modif ;-( Le
code est là :
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
@+ ?
JP
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents
=True", il faudra enregistrer et relancer Excel. Comme les événements
sont désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Re...
Je ne suis pas sur d'avoir compris ta demande, peux-tu remettre en ligne
un bout de ton fichier avec le résultat souhaité.
http://www.cjoint.com/
--
Salutations
JJ
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de news:
u5CndRg0HHA.4004@TK2MSFTNGP05.phx.gbl...
Re,
"Jacky" <dupont@marrtin.fr> a écrit dans le message de news:
%23d0z$Cf0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu
entres interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count =
1 Then
Cela me donne ça :
Private Sub Worksheet_Change(ByVal Target As Range)
'If Not Intersect(Target, [c9:c250]) Is Nothing And Target.Count = 1 Then
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
'If Target.Row > 8 And Target.Row < 251 Then 'ajout
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))
0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = True
ainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Désolé, je ne comprends pas ! Je ne vois pas où insérer la modif ;-( Le
code est là :
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
@+ ?
JP
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents
=True", il faudra enregistrer et relancer Excel. Comme les événements
sont désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de news:
eQsy0Oe0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" <dupont@marrtin.fr> a écrit dans le message de news:
%23AbvhzuzHHA.1212@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de news:
OqGuwYszHHA.3400@TK2MSFTNGP03.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
%23EaV0QpzHHA.1208@TK2MSFTNGP03.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
u3EMhQozHHA.5772@TK2MSFTNGP02.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
uFpQ6OjzHHA.1188@TK2MSFTNGP04.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
uexOVQizHHA.4652@TK2MSFTNGP05.phx.gbl...
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" <dupont@marrtin.fr> a écrit dans le message de news:
OT0%23FCgzHHA.2312@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:
Ot6H%23lezHHA.4816@TK2MSFTNGP04.phx.gbl...
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
Re...
Je ne suis pas sur d'avoir compris ta demande, peux-tu remettre en ligne
un bout de ton fichier avec le résultat souhaité.
http://www.cjoint.com/
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Re,
"Jacky" a écrit dans le message de news:
%23d0z$Re...
Il serait souhaitable que cette plage d'interdit soir nommée
Par exemple "Interdit"
-Tu sélectionnes la plage en question
-Dans le petit carré blanc à gauche de la validation des formule tu
entres interdit (ou par le menu insertion/nom/définir)
-Dans le code vba tu modifies
If Not Intersect(Target, [interdit]) Is Nothing And Target.Count =
1 Then
Cela me donne ça :
Private Sub Worksheet_Change(ByVal Target As Range)
'If Not Intersect(Target, [c9:c250]) Is Nothing And Target.Count = 1 Then
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
'If Target.Row > 8 And Target.Row < 251 Then 'ajout
If Application.Sum(Range("f" & Target.Row & ":" & "m" & Target.Row))0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = Trueainsi que dans :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Désolé, je ne comprends pas ! Je ne vois pas où insérer la modif ;-( Le
code est là :
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
@+ ?
JP
ps: Attention, il y a un "Application.EnableEvents = False".....
Si pendant les essais un plantage se produit à l'intérieur de
"Application.EnableEvents = False" et de "Application.EnableEvents
=True", il faudra enregistrer et relancer Excel. Comme les événements
sont désactivées au moment du plantage, il ne sont pas activées
automatiquement, et plus rein ne fonctionne à l'intérieur de la "Private
Sub Worksheet_Change()".
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Bonjour Jacki,
J'ignore si tu repasseras sur ce fil "ancien", mais dans le même ordre
d'idée que ta dernière réponse, je souhaitais limité les message
"interdit" aux lignes 9 à 250. j'ai donc ajouté ce qui suit, et ça ne
fonctionne pas !
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 Target.Row > 8 And Target.Row < 251 Then 'ce que j'ai ajouté !
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Then
Target = [mémo]
MsgBox "Interdit"
End If
End If 'ajout
End If
Application.EnableEvents = True
A bientôt ?
JP
"Jacky" a écrit dans le message de news:
%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
Re,
Un (tout petit) bout du fichier avec un cadre pour résumer la question ;-)
http://cjoint.com/?hDvJ7PyeiL
Je n'ai pas ajusté le code pour les Tris, etc, mais théoriquement tu n'en
as pas besoin.
D'avance, merci !
JP
Re,
Un (tout petit) bout du fichier avec un cadre pour résumer la question ;-)
http://cjoint.com/?hDvJ7PyeiL
Je n'ai pas ajusté le code pour les Tris, etc, mais théoriquement tu n'en
as pas besoin.
D'avance, merci !
JP
Re,
Un (tout petit) bout du fichier avec un cadre pour résumer la question ;-)
http://cjoint.com/?hDvJ7PyeiL
Je n'ai pas ajusté le code pour les Tris, etc, mais théoriquement tu n'en
as pas besoin.
D'avance, merci !
JP
Re...
Essaie ceci
'---------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c9:c20]) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
' If Target.Row > 8 And Target.Row < 251 Then 'ajout (ne fonctionne
pas !)
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
'-----------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c20]) Is Nothing 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 If
End Sub
'---------------------------
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Re,
Un (tout petit) bout du fichier avec un cadre pour résumer la question
;-)
http://cjoint.com/?hDvJ7PyeiL
Je n'ai pas ajusté le code pour les Tris, etc, mais théoriquement tu n'en
as pas besoin.
D'avance, merci !
JP
Re...
Essaie ceci
'---------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c9:c20]) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
' If Target.Row > 8 And Target.Row < 251 Then 'ajout (ne fonctionne
pas !)
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
'-----------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c20]) Is Nothing 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 If
End Sub
'---------------------------
--
Salutations
JJ
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de news:
ux52Pgh0HHA.4916@TK2MSFTNGP03.phx.gbl...
Re,
Un (tout petit) bout du fichier avec un cadre pour résumer la question
;-)
http://cjoint.com/?hDvJ7PyeiL
Je n'ai pas ajusté le code pour les Tris, etc, mais théoriquement tu n'en
as pas besoin.
D'avance, merci !
JP
Re...
Essaie ceci
'---------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c9:c20]) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
' If Target.Row > 8 And Target.Row < 251 Then 'ajout (ne fonctionne
pas !)
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Then
Target = [mémo]
MsgBox "Interdit"
End If
'End If 'ajout
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
'-----------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [c9:c20]) Is Nothing 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 If
End Sub
'---------------------------
--
Salutations
JJ
"j-pascal" a écrit dans le message de news:Re,
Un (tout petit) bout du fichier avec un cadre pour résumer la question
;-)
http://cjoint.com/?hDvJ7PyeiL
Je n'ai pas ajusté le code pour les Tris, etc, mais théoriquement tu n'en
as pas besoin.
D'avance, merci !
JP