Bonsoir à tous,
Voici une macro que j'ai trouvée. En cliquant sur une cellule ,elle prend la valeur 45 de l'index des couleurs ,puis si on clique sur une autre cellule la couleur disparaît et c'est la nouvelle cellule qui est colorée.
Bien qu'elle paraisse simple je n'arrive pas à voir comment elle marche.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Option Explicit
Public old_color, old_sel
 
 
Sub Worksheet_SelectionChange(ByVal sel As Range)
 
      'Changement de couleur après click
 
    If Not old_sel = "" Then Range(old_sel).Interior.ColorIndex = old_color
    old_sel = sel.Address
    old_color = ActiveCell.Interior.ColorIndex
    ActiveCell.Interior.ColorIndex = 45
 
End Sub
voici ce que je comprends
On crée deux variables old_sel et old_color qui sont Public et de type variant je suppose.
On teste si old_sell n'est pas vide or elle n'a aucune valeur initiale mais quand je suis sa valeur(infobulle), pas à pas , excel lui donne d'emblée la valeur d'une adresse , celle de la cellule sélectionnée à l'ouverture de la feuille??
Il ne la considère donc pas vide et lui donne comme couleur (après l'avoir considéré comme un objet range ) la valeur old_color que je considère comme vide.
Je suppose que sel . adress est la cellule ou on l'on clique . Aurait on pu écrire ActiveCell.Adress à la place ?
Bon après j'ai compris c'est une inversion de couleur.
C'est surtout l'initialisation que je ne comprends pas . car si old_cell ets la valeur de l'adresse de la cellule sélectionnée dès l'ouverture de la feuille ,ne devrait ce pas être un nom réservé?

Merci de m'avoir consacré de votre temps