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

Propriété d'un shape

11 réponses
Avatar
ThierryP
Bonjour à tou(te)s,

content de voir après tout ce temps les noms de contributeurs historiques :-))))
Une petite question : J'utilise un shape sur une feuille pour identifier la
ligne de la cellule active (merci Gaëtan Mourmant !!!). Est-il possible de le
rendre non sélectionnable ?

Merci d'avance à tous ceux qui vont se précipiter pour résoudre mon souci !

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline

10 réponses

1 2
Avatar
FdeCourt
Salut,

Pourquoi pas protéger ta feuille ?

Et juste par curiosité, pourquoi passer par une forme pour détecter la
ligne active ? Un ActiveCell.Rowne suffit-il pas ?

Cordialement,

F.
Avatar
ThierryP
Merci pour la réponse !

Je me suis mal expliqué : sur un tableau assez large, je trace un rectangle en
surbrillance sur la ligne de la cellule active pour faire ressortir les infos
correspondantes à cette cellule sur un évènement Worksheet_SelectionChange. Le
seul problème est que ce rectangle est cliquable.

Je viens de contourner le problème en dessinant un rectangle à gauche de la
cellule active, un autre à droite jusqu'à la largeur voulue.

Pas très élégant.....mais ça marche :-))

Je reste preneur de toute autre suggestion !!!!

Le 19/03/2010 16:26, FdeCourt a écrit :
Salut,

Pourquoi pas protéger ta feuille ?

Et juste par curiosité, pourquoi passer par une forme pour détecter la
ligne active ? Un ActiveCell.Rowne suffit-il pas ?

Cordialement,

F.



--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
FdeCourt
Salut,

Dans ce cas pourquoi ne pas colorier le fond de la cellule, plutot que
de mettre un rectangle devant ?

Avec l'exemple ci-dessous, je met en rouge la ligne sélectionné, puis
je la remet dans sa couleur originelle lorsque je sélectionne une
autre ligne.
Attention, je me sers d'une cellule pour conserver la couleur de fond
de chacune de mes cellules de la ligne sélectionnée (voir la partie
configuration, il n'y a que 3 paramètres) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim colonneDebut As Integer, colonneFin As Integer
Dim historique
Dim c As Range
Dim monHisto As String
Dim MaCelluleDeConfig As Range

'Configuration
Set MaCelluleDeConfig = Feuil2.Cells(1, 1)
colonneDebut = 1
colonneFin = 10

historique = Split(MaCelluleDeConfig.Value, "|")
If Target.Rows.Count = 1 And Target.Columns.Count = 1 And
Target.Row <> historique(0) Then
For Each c In Range(Cells(Target.Row, colonneDebut),
Cells(Target.Row, colonneFin))
monHisto = monHisto & c.Row & "|" & c.Interior.ColorIndex
& "|"
Next
MaCelluleDeConfig.Value = monHisto
Range(Cells(Target.Row, colonneDebut), Cells(Target.Row,
colonneFin)).Interior.ColorIndex = 3

For x = 0 To UBound(historique) Step 2
If historique(x) <> "" Then
Range(Cells(Val(historique(x)), colonneDebut),
Cells(Val(historique(x)), colonneDebut)).Interior.ColorIndex =
IIf(historique(x + 1) = -4142, xlNone, historique(x + 1))
colonneDebut = colonneDebut + 1
End If
Next
End If
End Sub

Cordialement,

F.
Avatar
JB
Bonjour,

http://boisgontierjacques.free.fr/fichiers/jb-Curseur.xls

JB

On 19 mar, 15:00, ThierryP wrote:
Bonjour à tou(te)s,

content de voir après tout ce temps les noms de contributeurs historiqu es :-))))
Une petite question : J'utilise un shape sur une feuille pour identifier la
ligne de la cellule active (merci Gaëtan Mourmant !!!). Est-il possible de le
rendre non sélectionnable ?

Merci d'avance à tous ceux qui vont se précipiter pour résoudre mon souci !

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin go urmet - G.
Courteline
Avatar
FdeCourt
Ouah, génial le coup de la mise en forme conditionnelle !
Pour info, sous Excel 2000, il y a une erreur sur la feuille
CurseurLigneMZCoul (1004 : Set champ =
Range("B1:D20,J2:O9,M12:R17") 'ou Range("laZone") si zone nommée)

Cordialement,

F.
Avatar
ThierryP
en fait, je veux surligner les infos correspondantes à la cellule choisie (sur
la même ligne) dans une colonne, et non la cellule elle-même, choisie par
l'utilisateur (on suppose donc qu'il sait ce qu'il sélectionne ......)

Merci du retour


Le 19/03/2010 17:45, FdeCourt a écrit :
Salut,

Dans ce cas pourquoi ne pas colorier le fond de la cellule, plutot que
de mettre un rectangle devant ?

Avec l'exemple ci-dessous, je met en rouge la ligne sélectionné, puis
je la remet dans sa couleur originelle lorsque je sélectionne une
autre ligne.
Attention, je me sers d'une cellule pour conserver la couleur de fond
de chacune de mes cellules de la ligne sélectionnée (voir la partie
configuration, il n'y a que 3 paramètres) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim colonneDebut As Integer, colonneFin As Integer
Dim historique
Dim c As Range
Dim monHisto As String
Dim MaCelluleDeConfig As Range

'Configuration
Set MaCelluleDeConfig = Feuil2.Cells(1, 1)
colonneDebut = 1
colonneFin = 10

historique = Split(MaCelluleDeConfig.Value, "|")
If Target.Rows.Count = 1 And Target.Columns.Count = 1 And
Target.Row<> historique(0) Then
For Each c In Range(Cells(Target.Row, colonneDebut),
Cells(Target.Row, colonneFin))
monHisto = monHisto& c.Row& "|"& c.Interior.ColorIndex
& "|"
Next
MaCelluleDeConfig.Value = monHisto
Range(Cells(Target.Row, colonneDebut), Cells(Target.Row,
colonneFin)).Interior.ColorIndex = 3

For x = 0 To UBound(historique) Step 2
If historique(x)<> "" Then
Range(Cells(Val(historique(x)), colonneDebut),
Cells(Val(historique(x)), colonneDebut)).Interior.ColorIndex > IIf(historique(x + 1) = -4142, xlNone, historique(x + 1))
colonneDebut = colonneDebut + 1
End If
Next
End If
End Sub

Cordialement,

F.



--
----
ThierryP

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet
(Georges Courteline)
Avatar
ThierryP
Ouuuuuuuuups,désolé,

J'avais oublié un des maîtres......:-))))


Le 19/03/2010 17:55, JB a écrit :
Bonjour,

http://boisgontierjacques.free.fr/fichiers/jb-Curseur.xls

JB

On 19 mar, 15:00, ThierryP wrote:
Bonjour à tou(te)s,

content de voir après tout ce temps les noms de contributeurs historiques :-))))
Une petite question : J'utilise un shape sur une feuille pour identifier la
ligne de la cellule active (merci Gaëtan Mourmant !!!). Est-il possible de le
rendre non sélectionnable ?

Merci d'avance à tous ceux qui vont se précipiter pour résoudre mon souci !

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline






--
----
ThierryP

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet
(Georges Courteline)
Avatar
Benoît Marchand [Benead]
Bonsoir ThierryP,

Une alternative aux propositions de JB est de "Piloter" en fonction de
ton besoin la MFC par exemple comme ceci :

' ************* Module Standard*************
' A Exécuter une seule fois, c'est un exemple de MFC, tu peux supprimer
des FormatConditions
Sub InitTP()

' Définition d'un champ nommé (possibilité de le rendre invisible)
ThisWorkbook.Names.Add Name:="LigneActive", RefersToR1C1:="=0"

' Création du format conditionnel en colonne 10
With Columns(10)
.FormatConditions.Add Type:=xlExpression,
Formula1:="=LigneActive=LIGNE()"
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 41
End With
.FormatConditions(1).Borders(xlLeft).ColorIndex = 3
.FormatConditions(1).Borders(xlRight).ColorIndex = 3
.FormatConditions(1).Borders(xlTop).ColorIndex = 3
.FormatConditions(1).Borders(xlBottom).ColorIndex = 3
.FormatConditions(1).Interior.ColorIndex = 6
End With
End Sub

' ************* Module de la feuille *************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ThisWorkbook.Names("LigneActive").RefersToLocal IIf(Target.Rows.Count = 1, Target.Row, 0)
End Sub
' ******************************************
Cela peut ouvrir d'autres perspectives en mettant en avant une cellule
sans quelle soit obligatoirement sur la même ligne, tu charges
"LigneActive" avec row+1 ou row-3 ou le résultat d'un index... De même
que tu peux mettre plusieurs conditions (ligneactive et colonneactive...)

Dans le même tonneau de la MFC : une astuce pour voir d'un coup d'oeil
les cellules verrouillées, tu mets le format conditionnel suivant dans
ta plage active "ÎLLULE("protege";lacelluleActive)=1" (LaCelluleActive
sans les $) et les cellules verrouillées seront immédiatement
identifées. Pour aller encore plus loin tu associe la condition
précédente avec le résulat d'une case à cochée et tu ne vois les
cellules verrouillées qu'a la demande.

Exemple à la demande.

A+
Benead
Excel 2000

ThierryP a écrit :
Ouuuuuuuuups,désolé,

J'avais oublié un des maîtres......:-))))


Le 19/03/2010 17:55, JB a écrit :
Bonjour,

http://boisgontierjacques.free.fr/fichiers/jb-Curseur.xls

JB

On 19 mar, 15:00, ThierryP wrote:
Bonjour à tou(te)s,

content de voir après tout ce temps les noms de contributeurs
historiques :-))))
Une petite question : J'utilise un shape sur une feuille pour
identifier la
ligne de la cellule active (merci Gaëtan Mourmant !!!). Est-il
possible de le
rendre non sélectionnable ?

Merci d'avance à tous ceux qui vont se précipiter pour résoudre mon
souci !

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G.
Courteline






Avatar
ThierryP
Bonjour Benoit(Eh oui, moi j'ai dormi !!!)

Merci pour ces explications aussi fournies que détaillées ! C'est vrai que les
MFC sont très puissantes; pour moi, le gros avantage de ma solution bricolée est
justement que je ne touche pas aux mises en forme des cellules : en cas de
plantage ou de fausse manip, je ne risque pas d'avoir des cellules avec des
mises en forme non désirées (je ne suis pas le seul à utiliser ce type de
fichier). En tous cas, plein de pistes interessantes à explorer :-)))
Merci


Le 19/03/2010 23:31, "Benoît Marchand [Benead]" a écrit :
Bonsoir ThierryP,

Une alternative aux propositions de JB est de "Piloter" en fonction de
ton besoin la MFC par exemple comme ceci :

' ************* Module Standard*************
' A Exécuter une seule fois, c'est un exemple de MFC, tu peux supprimer
des FormatConditions
Sub InitTP()

' Définition d'un champ nommé (possibilité de le rendre invisible)
ThisWorkbook.Names.Add Name:="LigneActive", RefersToR1C1:="=0"

' Création du format conditionnel en colonne 10
With Columns(10)
.FormatConditions.Add Type:=xlExpression,
Formula1:="=LigneActive=LIGNE()"
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 41
End With
.FormatConditions(1).Borders(xlLeft).ColorIndex = 3
.FormatConditions(1).Borders(xlRight).ColorIndex = 3
.FormatConditions(1).Borders(xlTop).ColorIndex = 3
.FormatConditions(1).Borders(xlBottom).ColorIndex = 3
.FormatConditions(1).Interior.ColorIndex = 6
End With
End Sub

' ************* Module de la feuille *************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ThisWorkbook.Names("LigneActive").RefersToLocal > IIf(Target.Rows.Count = 1, Target.Row, 0)
End Sub
' ******************************************
Cela peut ouvrir d'autres perspectives en mettant en avant une cellule
sans quelle soit obligatoirement sur la même ligne, tu charges
"LigneActive" avec row+1 ou row-3 ou le résultat d'un index... De même
que tu peux mettre plusieurs conditions (ligneactive et colonneactive...)

Dans le même tonneau de la MFC : une astuce pour voir d'un coup d'oeil
les cellules verrouillées, tu mets le format conditionnel suivant dans
ta plage active "ÎLLULE("protege";lacelluleActive)=1" (LaCelluleActive
sans les $) et les cellules verrouillées seront immédiatement
identifées. Pour aller encore plus loin tu associe la condition
précédente avec le résulat d'une case à cochée et tu ne vois les
cellules verrouillées qu'a la demande.

Exemple à la demande.

A+
Benead
Excel 2000

ThierryP a écrit :
Ouuuuuuuuups,désolé,

J'avais oublié un des maîtres......:-))))


Le 19/03/2010 17:55, JB a écrit :
Bonjour,

http://boisgontierjacques.free.fr/fichiers/jb-Curseur.xls

JB

On 19 mar, 15:00, ThierryP wrote:
Bonjour à tou(te)s,

content de voir après tout ce temps les noms de contributeurs
historiques :-))))
Une petite question : J'utilise un shape sur une feuille pour
identifier la
ligne de la cellule active (merci Gaëtan Mourmant !!!). Est-il
possible de le
rendre non sélectionnable ?

Merci d'avance à tous ceux qui vont se précipiter pour résoudre mon
souci !

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G.
Courteline











--
----
ThierryP

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet
(Georges Courteline)
Avatar
Benoît Marchand [Benead]
Bonjour,

Moi j'évite de mettre des objets dans les tableaux, la MFC est une
alternative, car elle change pas le format prédéfinie de ta cellule que
si la condition est remplie et dès quelle redevient fausse, l'ancien
format se remet en place.

Si tu veux absolument utilisé un shape, et que tu ne veux pas que l'on
puisse le sélectionner, il faut protéger la feuille par macro en ne
cochant que les objets
ActiveSheet.Protect , True, False, False, True
Il faut le faire par macro si tu veux pouvoir déplacer ton shape grace à
l'argument "*/UserInterfaceOnly/*".

Ensuite, tu peux déplacer ou modifier ton shape à ta convenance.

A+
Benead
Excel 2000

ThierryP a écrit :
Bonjour Benoit(Eh oui, moi j'ai dormi !!!)

Merci pour ces explications aussi fournies que détaillées ! C'est vrai
que les MFC sont très puissantes; pour moi, le gros avantage de ma
solution bricolée est justement que je ne touche pas aux mises en
forme des cellules : en cas de plantage ou de fausse manip, je ne
risque pas d'avoir des cellules avec des mises en forme non désirées
(je ne suis pas le seul à utiliser ce type de fichier). En tous cas,
plein de pistes interessantes à explorer :-)))
Merci


Le 19/03/2010 23:31, "Benoît Marchand [Benead]" a écrit :
Bonsoir ThierryP,

Une alternative aux propositions de JB est de "Piloter" en fonction de
ton besoin la MFC par exemple comme ceci :

' ************* Module Standard*************
' A Exécuter une seule fois, c'est un exemple de MFC, tu peux supprimer
des FormatConditions
Sub InitTP()

' Définition d'un champ nommé (possibilité de le rendre invisible)
ThisWorkbook.Names.Add Name:="LigneActive", RefersToR1C1:="=0"

' Création du format conditionnel en colonne 10
With Columns(10)
.FormatConditions.Add Type:=xlExpression,
Formula1:="=LigneActive=LIGNE()"
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 41
End With
.FormatConditions(1).Borders(xlLeft).ColorIndex = 3
.FormatConditions(1).Borders(xlRight).ColorIndex = 3
.FormatConditions(1).Borders(xlTop).ColorIndex = 3
.FormatConditions(1).Borders(xlBottom).ColorIndex = 3
.FormatConditions(1).Interior.ColorIndex = 6
End With
End Sub

' ************* Module de la feuille *************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ThisWorkbook.Names("LigneActive").RefersToLocal >> IIf(Target.Rows.Count = 1, Target.Row, 0)
End Sub
' ******************************************
Cela peut ouvrir d'autres perspectives en mettant en avant une cellule
sans quelle soit obligatoirement sur la même ligne, tu charges
"LigneActive" avec row+1 ou row-3 ou le résultat d'un index... De même
que tu peux mettre plusieurs conditions (ligneactive et
colonneactive...)

Dans le même tonneau de la MFC : une astuce pour voir d'un coup d'oeil
les cellules verrouillées, tu mets le format conditionnel suivant dans
ta plage active "ÎLLULE("protege";lacelluleActive)=1" (LaCelluleActive
sans les $) et les cellules verrouillées seront immédiatement
identifées. Pour aller encore plus loin tu associe la condition
précédente avec le résulat d'une case à cochée et tu ne vois les
cellules verrouillées qu'a la demande.

Exemple à la demande.

A+
Benead
Excel 2000

ThierryP a écrit :
Ouuuuuuuuups,désolé,

J'avais oublié un des maîtres......:-))))


Le 19/03/2010 17:55, JB a écrit :
Bonjour,

http://boisgontierjacques.free.fr/fichiers/jb-Curseur.xls

JB

On 19 mar, 15:00, ThierryP wrote:
Bonjour à tou(te)s,

content de voir après tout ce temps les noms de contributeurs
historiques :-))))
Une petite question : J'utilise un shape sur une feuille pour
identifier la
ligne de la cellule active (merci Gaëtan Mourmant !!!). Est-il
possible de le
rendre non sélectionnable ?

Merci d'avance à tous ceux qui vont se précipiter pour résoudre mon
souci !

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G.
Courteline











1 2