clic = chgt couleur cellule

L

Laurent

Guest
Salut à tous,
Je n'utilise excel que pour faire des sommes et je n'y connais absolumnt rien en macro. Si qq'un pouvait m'aider ;o)
En fait j'aimerais qu'en cliquant dessus, la couleur d'une cellule passe du blanc ->vert -> jaune ->orange ->rouge
Merci d'avance pour votre aide
 
L

LaurentTBT

Guest
Bonjour Laurent,

Vas sous VBA, et dans la feuille de code liée à la feuille qui t'intéresse, écrit ce code (en remplaçant $B$2 par les références de la cellule que tu veux colorer)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$2" Then
Select Case Target.Interior.ColorIndex
Case xlNone
Target.Interior.ColorIndex = 4
Case 4
Target.Interior.ColorIndex = 6
Case 6
Target.Interior.ColorIndex = 46
Case 46
Target.Interior.ColorIndex = 3
Case 3
Target.Interior.ColorIndex = xlNone
End Select
End If
End Sub

Inconvénient:
Après un clic, il faut réactiver en allant sélectionner une autre cellule, car si on clique plusieurs fois de suite sur la cellule à colorer, seul le premier click est pris en compte.

Solution:
Rajoute juste avant End If:
Range("B1").select

Nouvel inconvénient:
cette fois, on peut cliquer plusieurs fois de suite pour changer la couleurs, mais on ne reste plus fixe sur la cellule B2, on ne peut donc pas en modifier le contenu.

Dernière alternative:
qui n'a pas les deux inconvénients ci-dessus: faire faire le changement de couleur non pas par un clic, mais par un double clic:
Dans ce cas, remplace la première ligne de la macro ci-dessus:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
par:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
et rajoute juste avant le end if:
Cancel = True

Salut Laurent,
Laurent.
 
S

SAMBOT95

Guest
LaurentTBT ? Comment remplacer l'adresse de ma cellule par une zone de cellules (genre une colonne ou une ligne ou simplement C2:G5)?
Je débute, merci de me répondre avec des explications enfantines !
A+
 
L

LaurentTBT

Guest
Salut Sambot95

Remplace la ligne

If Target.Address = "$B$2" Then

par

If Not Application.Intersect(Target, Range("A2,A5,C2:D5,F:F")) Is Nothing Then

Dans cet exemple, les cellules concernées par la modification de couleur sont: A2, A5, mais aussi la zone de C2 à D5, où encore la colonne F.
A toi d'adapter selon tes besoins.

Bonsoir.
Laurent.
 

Discussions similaires

Réponses
2
Affichages
243

Statistiques des forums

Discussions
312 970
Messages
2 094 044
Membres
105 926
dernier inscrit
Odyssea