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

(vba) pb target sur plage protégée ...

7 réponses
Avatar
j-pascal
Bonjour,

J'effectue des saisies dans une plage "P9:AT110",
Si je clique dans une cellule de cette plage, je souhaiterais que le nom
situé dans la colonne "C" de la ligne correspondante soit sélectionné (en
surbrillance) ...
J'ai essayé le code qui suit, mais ça ne fonctionne pas du fait (j'imagine
!) que les colonnes Fà M sont protégées ... :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
Target.EntireRow.Select
End Sub

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

--
Cordialement @+
JP

7 réponses

Avatar
Jacky
Bonjour,

Les cellules en correspondant en colonne C non verrouillées
'-----------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count = 1
Then
Range("c" & Target.Row).Select
End If
End Sub
'--------------
--
Salutations
JJ


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

J'effectue des saisies dans une plage "P9:AT110",
Si je clique dans une cellule de cette plage, je souhaiterais que le nom
situé dans la colonne "C" de la ligne correspondante soit sélectionné (en
surbrillance) ...
J'ai essayé le code qui suit, mais ça ne fonctionne pas du fait (j'imagine
!) que les colonnes Fà M sont protégées ... :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
Target.EntireRow.Select
End Sub

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

--
Cordialement @+
JP


Avatar
j-pascal
Bonjour Jacky,

A mon avis, ça va être plus compliqué, voire impossible ...
La cellule de la colonne C est bien sélectionnée, mais seulement quand je
saisie une valeur dans la plage ... Ce que j'aurais aimé, c'est qu'elle se
mette en surbrillance, lorsque je sélectionne une cellule de la plage, donc
avant la saisie ...
Par ailleurs, la sélection est fugace car j'ai un WorksheetSelection_Change
...
Tout le code est ici :
'----------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count = 1
Then
Range("c" & Target.Row).Select
End If


If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" & Chr(10)
& Chr(10) & "(La ligne contient des informations ...)", vbOKOnly +
vbInformation, "Attention !"
End If
End If

Application.EnableEvents = True

ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !

ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count = 1
Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) &
Target.Value & Chr(34)

compteur = 0

For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 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 + 1
Shapes("monshape").TextFrame.Characters.Text =
"Suppression interdite !"

Shapes("monshape").OLEFormat.Object.AutoSize = True
Shapes("monshape").OLEFormat.Object.ShapeRange.Fill.ForeColor.SchemeColor
= 21 'bleu pétrole

Shapes("monshape").OLEFormat.Object.Font.Name =
"Verdana"
Shapes("monshape").OLEFormat.Object.Font.Size = 9
'modif 09/08
Shapes("monshape").OLEFormat.Object.Font.ColorIndex = 2
Shapes("monshape").OLEFormat.Object.Font.Bold = True


Else

On Error Resume Next

Shapes("monshape").Visible = False

End If
End If

End Sub

Sub creeShape()

Shapes.AddTextbox(msoTextOrientationHorizontal, 1, 1, 70, 10).Select
Selection.Name = "monshape"

Shapes("monshape").Left = ActiveCell.Left
Shapes("monshape").Top = ActiveCell.Top + ActiveCell.Height + 1

Shapes("monshape").OLEFormat.Object.AutoSize = True
Shapes("monshape").OLEFormat.Object.ShapeRange.Fill.ForeColor.SchemeColor
= 2 'rouge

Shapes("monshape").OLEFormat.Object.Font.Name = "Verdana"
Shapes("monshape").OLEFormat.Object.Font.Size = 11
Shapes("monshape").OLEFormat.Object.Font.ColorIndex = 2
Shapes("monshape").OLEFormat.Object.Font.Bold = True


' Shapes.AddTextbox(msoTextOrientationHorizontal, 1, 1, 70, 10).Select
' Selection.Name = "monshape"
' Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
' Selection.Font.Name = "Verdana"
' Selection.Font.Size = 8
' Selection.Font.ColorIndex = 2
' Selection.Font.Bold = True
' Shapes("monshape").Left = ActiveCell.Left
' Shapes("monshape").Top = ActiveCell.Top + ActiveCell.Height + 3

End Sub
'----------------------------------------------

Peut-être à + ?

JP


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

Bonjour,

Les cellules en correspondant en colonne C non verrouillées
'-----------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count = 1
Then
Range("c" & Target.Row).Select
End If
End Sub
'--------------
--
Salutations
JJ


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

J'effectue des saisies dans une plage "P9:AT110",
Si je clique dans une cellule de cette plage, je souhaiterais que le nom
situé dans la colonne "C" de la ligne correspondante soit sélectionné (en
surbrillance) ...
J'ai essayé le code qui suit, mais ça ne fonctionne pas du fait
(j'imagine !) que les colonnes Fà M sont protégées ... :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
Target.EntireRow.Select
End Sub

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

--
Cordialement @+
JP






Avatar
Jacky
Re...
Ceci peinturlure la cellule de la colonne c en rouge pendant la saisie dans
la plage P9:AT110 de la même ligne.
'----------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count = 1
Then
[mémoire].Interior.ColorIndex = xlNone
ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" & Range("c" &
Target.Row).Address & ""
Range("c" & Target.Row).Interior.ColorIndex = 3
End If
End Sub
'-----------
--
Salutations
JJ


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

Bonjour Jacky,

A mon avis, ça va être plus compliqué, voire impossible ...
La cellule de la colonne C est bien sélectionnée, mais seulement quand je
saisie une valeur dans la plage ... Ce que j'aurais aimé, c'est qu'elle se
mette en surbrillance, lorsque je sélectionne une cellule de la plage,
donc avant la saisie ...
Par ailleurs, la sélection est fugace car j'ai un
WorksheetSelection_Change ...


Avatar
j-pascal
Re,

J'ai un msg d'erreur avec "Objet requis" ...
Si la cellule correspondante de la colonne C est affectée par une MEFC, cela
est-il compatible avec le "peinturlurage" ?

JP

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

Re...
Ceci peinturlure la cellule de la colonne c en rouge pendant la saisie
dans la plage P9:AT110 de la même ligne.
'----------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count = 1
Then
[mémoire].Interior.ColorIndex = xlNone
ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" & Range("c"
& Target.Row).Address & ""
Range("c" & Target.Row).Interior.ColorIndex = 3
End If
End Sub
'-----------
--
Salutations
JJ


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

Bonjour Jacky,

A mon avis, ça va être plus compliqué, voire impossible ...
La cellule de la colonne C est bien sélectionnée, mais seulement quand je
saisie une valeur dans la plage ... Ce que j'aurais aimé, c'est qu'elle
se mette en surbrillance, lorsque je sélectionne une cellule de la plage,
donc avant la saisie ...
Par ailleurs, la sélection est fugace car j'ai un
WorksheetSelection_Change ...






Avatar
Jacky
Re...
Si la cellule correspondante de la colonne C est affectée par une MEFC
C'est la MEFC qui gagne sur le peinturlurage



J'ai un msg d'erreur avec "Objet requis" ...
Cela vient d'ailleurs...

http://www.cjoint.com/
--
Salutations
JJ


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

Re,

J'ai un msg d'erreur avec "Objet requis" ...
Si la cellule correspondante de la colonne C est affectée par une MEFC,
cela est-il compatible avec le "peinturlurage" ?

JP

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

Re...
Ceci peinturlure la cellule de la colonne c en rouge pendant la saisie
dans la plage P9:AT110 de la même ligne.
'----------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count = 1
Then
[mémoire].Interior.ColorIndex = xlNone
ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" & Range("c"
& Target.Row).Address & ""
Range("c" & Target.Row).Interior.ColorIndex = 3
End If
End Sub
'-----------
--
Salutations
JJ


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

Bonjour Jacky,

A mon avis, ça va être plus compliqué, voire impossible ...
La cellule de la colonne C est bien sélectionnée, mais seulement quand
je saisie une valeur dans la plage ... Ce que j'aurais aimé, c'est
qu'elle se mette en surbrillance, lorsque je sélectionne une cellule de
la plage, donc avant la saisie ...
Par ailleurs, la sélection est fugace car j'ai un
WorksheetSelection_Change ...









Avatar
j-pascal
Re,

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

Re...
Si la cellule correspondante de la colonne C est affectée par une MEFC
C'est la MEFC qui gagne sur le peinturlurage




C'est ce qu'il me semblait ;-)

J'ai un msg d'erreur avec "Objet requis" ...
Cela vient d'ailleurs...

http://www.cjoint.com/


Même simplifié, le fichier est trop lourd ;-(
De toute façon, si la MEFC est prioritaire, ça limite les solutions ...
Merci quand même, ce code me servira certainement pour un autre classeur.

A bientôt,

JP
--
Salutations
JJ


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

Re,

J'ai un msg d'erreur avec "Objet requis" ...
Si la cellule correspondante de la colonne C est affectée par une MEFC,
cela est-il compatible avec le "peinturlurage" ?

JP

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

Re...
Ceci peinturlure la cellule de la colonne c en rouge pendant la saisie
dans la plage P9:AT110 de la même ligne.
'----------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count = 1
Then
[mémoire].Interior.ColorIndex = xlNone
ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
Range("c" & Target.Row).Interior.ColorIndex = 3
End If
End Sub
'-----------
--
Salutations
JJ


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

Bonjour Jacky,

A mon avis, ça va être plus compliqué, voire impossible ...
La cellule de la colonne C est bien sélectionnée, mais seulement quand
je saisie une valeur dans la plage ... Ce que j'aurais aimé, c'est
qu'elle se mette en surbrillance, lorsque je sélectionne une cellule de
la plage, donc avant la saisie ...
Par ailleurs, la sélection est fugace car j'ai un
WorksheetSelection_Change ...













Avatar
Trirème
Bonjour j-pascal et Jacky
Puis je m'immiscer dans votre conversation ?

Est-ce que ta demande ne va pas créer un comportement étrange d'Excel ?
Je ne vois pas comment tu peux saisir en "P9:AT110" si tu forces la sélection d'une autre
cellule.
Mais si tu veux toujours voir la cellule Cxx, connais-tu l'usage des volets qui
fractionnent la feuille en te permettant de toujours voir les entêtes de lignes et/ou de
colonnes :
Fenêtre, Figer les volets

Autre possibilité si tu veux toujours voir le contenu de Cxx, c'est de l'afficher dans la
barre d'état, mais c'est si petit... :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [P9:AT110]) Is Nothing Or Target.Count <> 1 Then
Application.StatusBar = False
Exit Sub
Else
Application.DisplayStatusBar = True
Application.StatusBar = Range("C" & Target.Row).Value
End If
End Sub

Cordialement,
Trirème

Bonjour,

J'effectue des saisies dans une plage "P9:AT110",
Si je clique dans une cellule de cette plage, je souhaiterais que le nom
situé dans la colonne "C" de la ligne correspondante soit sélectionné
(en surbrillance) ...
J'ai essayé le code qui suit, mais ça ne fonctionne pas du fait
(j'imagine !) que les colonnes Fà M sont protégées ... :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
Target.EntireRow.Select
End Sub

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