Propriété d'un shape

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FdeCourt
Le #21402981
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
Le #21403221
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
FdeCourt
Le #21403411
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.
JB
Le #21403531
Bonjour,

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

JB

On 19 mar, 15:00, ThierryP
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
FdeCourt
Le #21403521
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.
ThierryP
Le #21404571
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)
ThierryP
Le #21404561
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
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)
Benoît Marchand [Benead]
Le #21405861
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
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
Le #21409051
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
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)
Benoît Marchand [Benead]
Le #21409491
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
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











Publicité
Poster une réponse
Anonyme