Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

Int0x

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à mettre une couleur sur la case de la colonne B de ma sélection et que cette couleur disparaisse quand je change de sélection.

Exemple, qui sera plus parlant:
J'ai une liste de noms dans la colonne B.
Si je me place en R22, j'aimerais que la cellule B22 se mette en couleur (allez, jaune clair). Ensuite, si je descend en R23, j'aimerais que la cellule B23 soit en couleur (le fameux jaune clair) et que l'ancienne cellule colorée (R22) redevienne "vide de couleur"

Je suis nul en VBA (en fait je n'y connais absolument rien) mais en essayant de bidouiller avec des macros choppées ici et la, j'ai réussi à mettre ma première condition (mise en couleur de la cellule en B).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells(Target.Row, 2).Interior.ColorIndex = 36
End Sub

En revanche, il faut que j'intègre une condition pour que la couleur se désactive si ma sélection n'est plus sur cette ligne.

L'objectif est de pouvoir mettre en évidence le nom de la personne concernée par ma sélection (grand tableau, ca fatigue les yeux !).

Pourriez-vous m'aider ?
Par avance merci !
(je suppose qu'une fois ceci effectué, je pourrais ensuite aisément rajouter des conditions comme "mettre le texte en gras et rouge", etc...)
 

Modeste

XLDnaute Barbatruc
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

Bonjour Int0x,

essaie avec:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B][COLOR="Green"]Columns(2).Cells.Interior.ColorIndex = xlNone[/COLOR][/B]
Cells(Target.Row, 2).Interior.ColorIndex = 36
End Sub
 

Int0x

XLDnaute Occasionnel
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

Bonjour,

Puisque c'était presque trop facile :)p), je souhaiterais rajouter une condition qui permette de limiter cette macro à une certaine plage (par exemple, uniquement pour les lignes 5 à 252).

Est-ce possible ?
 

Modeste

XLDnaute Barbatruc
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

Bonjour ... et puis tous les autres,

Ceci permet de ne colorer que la plage que tu as déterminé:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Columns(2).Cells.Interior.ColorIndex = xlNone
[COLOR="Purple"]If Target.Row < 5 Or Target.Row > 252 Then Exit Sub[/COLOR]
Cells(Target.Row, 2).Interior.ColorIndex = 36
End Sub

Dans ce cas, j'ai fait en sorte que la couleur disparaisse dès qu'on clique en-dehors de la zone (lignes 5 à 252) si tu places le If en première position la cellule de la ligne sélectionnée précedemment reste colorée.

A toi de voir,
 

Int0x

XLDnaute Occasionnel
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

Bonjour Modeste,

Merci de ta rapidité et de ton efficacité.
J'ai décidé de placer la ligne IF en première position. Pourrais-tu me préciser (je pense qu'il faut rajouter un bout de code) comment restreindre la mise en forme de la colonne 2 à la plage donnée ?

Par exemple, il faudrait que la colonne 2 soit vide de couleur de la ligne 5 à 252. Ici, elle me vide toute la colonne (comme je l'avais bien demandé au début, avant que je fasse mon difficile ;) ). Peut-on lui dire de ne vider les couleurs que des lignes 5 à 252 ?
 

Modeste

XLDnaute Barbatruc
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

re-bonjour,

Si j'ai bien compris, il suffit de remplacer
Code:
Columns(2).Cells.Interior.ColorIndex = xlNone

... par
Code:
Range("B5:B252").Interior.ColorIndex = xlNone
 

Int0x

XLDnaute Occasionnel
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

J'aurais besoin d'apporter une correction, ou un complément à cette macro.
En effet, je viens de me rendre compte qu'il m'est impossible d'annuler les opérations que je fais avec cette macro active.

Je m'explique:
Je me positionne en I10, j'ai bien B10 qui s'allume (couleur).
Je descend en I11, j'ai bien B11 qui s'allume (couleur) et B10 qui s'éteint (n'a plus de couleur).
Je modifie un truc en I11 puis je descend en I12 (B12 s'allume et B11 s'éteint, absolument aucun problème de ce coté la).
Je me rends compte que je me suis trompé en I11 et je souhaite annuler mon action (ctrl + z), et la ca n'est plus possible !!
En fait, dès que je descend de I11 à I12, la flèche "annuler" se grise (comme quand on sauvegarde).

Un moyen pour passer outre ca ?
Car j'ai graphiquement optimisé la lecture du fichier, mais niveau fonctionnel, je viens de me tirer une balle dans le pied (si je laisse tel quel !).
D'avance merci ;)
 

Modeste

XLDnaute Barbatruc
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

re²,

Ah, mon pauvre ami ... je crains qu'il ne soit nécessaire de choisir entre le confort des yeux ... et l'intégrité de tes pieds. Quand une macro est exécutée, les modifications effectuées ne sont pas mémorisées. Microsoft mentionne:
Note When you run a Visual Basic for Applications macro, Excel allocates no memory for undoing actions. This feature is disabled for optimization of performance when you run a macro.

Dans des cas exceptionnels, on pourrait faire une copie de sauvegarde, via la macro, pour annuler "en bloc" une série de manipulations. Cependant, dans ton cas, ça alourdirait terriblement, pour un tout petit gain au niveau du confort visuel.
Pour autant que je sache, la seule solution est de fermer le fichier sans enregistrer les dernières modifications ... ou de supprimer la macro :(
 

Int0x

XLDnaute Occasionnel
Re : Condition pour annuler mon ancienne action si ma target n'est plus sur la ligne

Et bien, encore merci Modeste, tu confirmes malheureusement ce à quoi je m'attendais :(

Je me console en me disant que cette macro pourra quand même servir un de mes fichiers (les autres, quant à eux, continueront d'enrichir l'ophtalmo du coin).

Encore merci pour tes réponses et le temps passé sur mon cas,
Au plaisir,
Intox
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 070
Membres
103 453
dernier inscrit
Choupi