OVH Cloud OVH Cloud

Pour Rai (cellule active)

2 réponses
Avatar
BEAUCHAND
Bonjour Rai,
Le code que tu m'as donné fonctionne très bien lorsque la feuille n'est pas
protégée.
Si je protège la feuille tout en laissant des cellules non-protégées, je
reçois un message d'erreur lorsque je clique sur une cellule non-protégée.
"Run-time error 1004"
"Unable to set the color property of the interior class"

Merci à l'avance!

"Rai" wrote:

> BEAUCHAND a écrit :
> > Bonjour à tous,
> >
> > Je travail avec Excel 2000 et j'utilise le code suivant pour colorer en
> > jaune la cellule active:
> >
> > Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> > Cells.Interior.ColorIndex = xlNone
> > Target.Interior.ColorIndex = 6
> > End Sub
> >
> > Le problème c'est que si une cellule est déjà colorée de la même couleur ou
> > d'une autre couleur, la couleur originale disparait lorsque cette cellule
> > n'est plus active.
> > Y -a-t-il un moyen de remettre la couleur originale lorsque la cellule n'est
> > plus sélectionnée?
> >
> > Merci à l'avance!
> >
> Bonjour,
>
> Oui, il faut mémoriser ta couleur de cellule précédente.
>
> Public Couleur As Integer
> Public Adr As String
>
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> If Adr <> "" Then
> Range(Adr).Interior.ColorIndex = Couleur
> End If
> Adr = Target.Address
> Couleur = Target.Interior.ColorIndex
> Target.Interior.ColorIndex = 6
> End Sub
>
> Cela convient ?
>
> Cordialement
>
> Rai
>

2 réponses

Avatar
Rai
Bonjour Rai,
Le code que tu m'as donné fonctionne très bien lorsque la feuille n'est pas
protégée.
Si je protège la feuille tout en laissant des cellules non-protégées, je
reçois un message d'erreur lorsque je clique sur une cellule non-protégée.
"Run-time error 1004"
"Unable to set the color property of the interior class"

Merci à l'avance!

Bonjour,


2 Modifications :
Utilisation de 'ActiveCell' au lieu de 'Target', ce qui a pour effet
de n'agir que sur la cellule active, et par conséquent de supprimer les
problèmes qui apparaissent si l'on sélectionne une plage de cellules.

Gestion de la protection de la feuille : la 1ere ligne supprime la
protection - remplacer par activesheet.unprotect("toto") si la feuille
est protégée par un mot de passe (Toto en l'occurence)
la dernière ligne remet en place la protection - remplacer par
ActiveSheet.Protect Password:="Toto" si besoin.

ATTENTION : ce code ne vérifie pas si la feuille est protégée ou non,
donc à n'utiliser que sur une feuille qui sera protégée...

Public Couleur As Integer
Public Adr As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect

If Adr <> "" Then
Range(Adr).Interior.ColorIndex = Couleur
End If
Adr = ActiveCell.Address
Couleur = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = 6

ActiveSheet.Protect Password:="Toto"
End Sub

C'est OK ?

Cordialement

Rai

Avatar
BEAUCHAND
Merci Rai, tout fonctionne à merveille.

Bonne journée!

"Rai" wrote:

Bonjour Rai,
Le code que tu m'as donné fonctionne très bien lorsque la feuille n'est pas
protégée.
Si je protège la feuille tout en laissant des cellules non-protégées, je
reçois un message d'erreur lorsque je clique sur une cellule non-protégée.
"Run-time error 1004"
"Unable to set the color property of the interior class"

Merci à l'avance!

Bonjour,


2 Modifications :
Utilisation de 'ActiveCell' au lieu de 'Target', ce qui a pour effet
de n'agir que sur la cellule active, et par conséquent de supprimer les
problèmes qui apparaissent si l'on sélectionne une plage de cellules.

Gestion de la protection de la feuille : la 1ere ligne supprime la
protection - remplacer par activesheet.unprotect("toto") si la feuille
est protégée par un mot de passe (Toto en l'occurence)
la dernière ligne remet en place la protection - remplacer par
ActiveSheet.Protect Password:="Toto" si besoin.

ATTENTION : ce code ne vérifie pas si la feuille est protégée ou non,
donc à n'utiliser que sur une feuille qui sera protégée...

Public Couleur As Integer
Public Adr As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect

If Adr <> "" Then
Range(Adr).Interior.ColorIndex = Couleur
End If
Adr = ActiveCell.Address
Couleur = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = 6

ActiveSheet.Protect Password:="Toto"
End Sub

C'est OK ?

Cordialement

Rai