XL 2016 Changement couleur cellule sélectionné

Michest94

XLDnaute Occasionnel
Bonjour,

Comment changer la couleur d'une cellule quand elle est sélectionnée?

Merci à vous
 

Pièces jointes

  • Classeur1.xlsx
    8.5 KB · Affichages: 43
Solution
Bonjour JM,

Fichier (2) si une plage est concernée :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With [D8:D27] 'plage à adapter
    .Interior.Color = 12874308 'couleur de fond bleue
    .Font.ColorIndex = 2 'couleur police blanche
    If Intersect(ActiveCell, .Cells) Is Nothing Then Exit Sub
End With
With ActiveCell
    .Interior.Color = 49407 'couleur de fond orange
    .Font.ColorIndex = xlAutomatic 'couleur police noire
End With
End Sub
A+

soan

XLDnaute Barbatruc
Inactif
Bonjour Michest, le fil,

ton fichier en retour ; clique sur ta cellule D8.

ah, ben voilà c'que c'est d'jouer au fantôme ! 👻

t'as fais si peur à ta cellule qu'elle a attrapé la jaunisse ! 🤢

le smiley vert, c'est pour dire que D8 est malade, mais D8 est bien jaune,
pas verte ! ça va, tu as tout suivi ? 🤪 (sinon, relis tout bien lentement)


fais Alt F11 pour voir le code VBA ; puis quand tu auras terminé
d'admirer ma belle macro, fais Alt F11 pour aller sur Excel.

VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Address = "$D$8" Then .Interior.Color = 49407
  End With
End Sub
voici un remède pour ta cellule D8 : 😷

soan
 

Pièces jointes

  • Classeur1.xlsm
    14.1 KB · Affichages: 20

job75

XLDnaute Barbatruc
Bonjour Michest, soan,
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With [D8]
    .Interior.Color = IIf(Target.Address = .Address, 49407, 12874308) 'couleur de fond
    .Font.ColorIndex = IIf(Target.Address = .Address, xlAutomatic, 2) 'couleur police
End With
End Sub
A+
 

Pièces jointes

  • Classeur(1).xlsm
    14 KB · Affichages: 15

Staple1600

XLDnaute Barbatruc
Bonjour le fil Michest, soan

Puisque Michest n'a plus besoin désormais besoin de suivre le conseil de job75.
(cf message#2)
J'y vais aussi de ma macro matinale
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
If T.Count > 1 Then Exit Sub
T.Interior.Color = IIf(T.Address = "$D$8", Asc("Staple") + 1600, xlNone)
End Sub
Ou plus convivial (et/ou ergonomique*) avec une MFC matinée d'un peu de VBA.
La formule pour la MFC (cf copie écran ci-dessous)
01MFC_HC.jpg
Et dans le code de la feuille concernée par la MFC
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
*: on peut modifier la plage, le format et la couleur sur le Ruban:
Accueil=>Mise en forme conditionnelle

EDITION
Houps, Bonjour job75, je n'ai pas vu ton message.
J'étais en train de mettre en forme le mien pendant que tu postais le tien.
 

job75

XLDnaute Barbatruc
Bonjour JM,

Fichier (2) si une plage est concernée :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With [D8:D27] 'plage à adapter
    .Interior.Color = 12874308 'couleur de fond bleue
    .Font.ColorIndex = 2 'couleur police blanche
    If Intersect(ActiveCell, .Cells) Is Nothing Then Exit Sub
End With
With ActiveCell
    .Interior.Color = 49407 'couleur de fond orange
    .Font.ColorIndex = xlAutomatic 'couleur police noire
End With
End Sub
A+
 

Pièces jointes

  • Classeur(2).xlsm
    16.1 KB · Affichages: 22

Michest94

XLDnaute Occasionnel
Bonjour Michest, le fil,

ton fichier en retour ; clique sur ta cellule D8.

ah, ben voilà c'que c'est d'jouer au fantôme ! 👻

t'as fais si peur à ta cellule qu'elle a attrapé la jaunisse ! 🤢

le smiley vert, c'est pour dire que D8 est malade, mais D8 est bien jaune,
pas verte ! ça va, tu as tout suivi ? 🤪 (sinon, relis tout bien lentement)


fais Alt F11 pour voir le code VBA ; puis quand tu auras terminé
d'admirer ma belle macro, fais Alt F11 pour aller sur Excel.

VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Address = "$D$8" Then .Interior.Color = 49407
  End With
End Sub
voici un remède pour ta cellule D8 : 😷

soan
Bonjour Michest, le fil,

ton fichier en retour ; clique sur ta cellule D8.

ah, ben voilà c'que c'est d'jouer au fantôme ! 👻

t'as fais si peur à ta cellule qu'elle a attrapé la jaunisse ! 🤢

le smiley vert, c'est pour dire que D8 est malade, mais D8 est bien jaune,
pas verte ! ça va, tu as tout suivi ? 🤪 (sinon, relis tout bien lentement)


fais Alt F11 pour voir le code VBA ; puis quand tu auras terminé
d'admirer ma belle macro, fais Alt F11 pour aller sur Excel.

VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Address = "$D$8" Then .Interior.Color = 49407
  End With
End Sub
voici un remède pour ta cellule D8 : 😷

soan
Désolé pour le retour un peu tardif, j'ai vu la cellule D8 c'est parfait SOAN 👍
Par contre quand je clique sur une autre cellule D8 doit repasser à son ancienne couleur et la nouvelle sélectionnée passe en couleur.
Exemple : j'ai 5 cellules D8;D9;D10;D11;D12 en fonction du clique sur la cellule sélectionner elle passe en couleur. je clique sur D9 (couleur jaune) D8;D10;D11;D12 états initial puis je clique sur D12 (couleur jaune) les autres cellules passent à l'état initial y compris D9

En tout les cas merci pour ton remède 😷
 

Michest94

XLDnaute Occasionnel
Bonjour JM,

Fichier (2) si une plage est concernée :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With [D8:D27] 'plage à adapter
    .Interior.Color = 12874308 'couleur de fond bleue
    .Font.ColorIndex = 2 'couleur police blanche
    If Intersect(ActiveCell, .Cells) Is Nothing Then Exit Sub
End With
With ActiveCell
    .Interior.Color = 49407 'couleur de fond orange
    .Font.ColorIndex = xlAutomatic 'couleur police noire
End With
End Sub
A+
NICKEL ! merci
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @Michest, le fil,

tu as écrit : « Exemple : j'ai 5 cellules D8;D9;D10;D11;D12... »

Image.jpg


nouveau fichier ci-dessous, avec cette sub :
VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If Intersect(Target, [D8:D12]) Is Nothing Then Exit Sub
    Application.ScreenUpdating = 0
    With [D8:D12]
      .Interior.Color = 12874308: .Font.ColorIndex = 2
    End With
    .Interior.Color = 49407: .Font.ColorIndex = 0
  End With
End Sub
clique sur une des cellules sur fond bleu. :)

soan
 

Pièces jointes

  • Classeur1.xlsm
    15.2 KB · Affichages: 13

Michest94

XLDnaute Occasionnel
Bonsoir le fil

=>Michest
Pas de retour, avis et/ou commentaires sur le message#5 ?
(notamment la proposition qui mixe VBA et Mise en forme conditionnelle)
J'avais pourtant pris le temps de faire une belle copie d'écran.
:rolleyes:
Désolé aujourd'hui journée un peu compliquée je te fais un retour demain le seul essai que j'ai pu faire à partir d'un fichier exemple correspond bien à mon besoin par contre quand j'essai de l'appliquer dans mon fichier source cela ne fonctionne pas, je vais regarder ton retour sur les MFC si cela peut être concluant.
En tout les cas merci pour ton retour👍
Par contre la formule dans la MFC est tronquée dans ton fichier image
 

Staple1600

XLDnaute Barbatruc
Bonsoir Michest

=>Michest
Merci pour ton feedback
Alors pour faire simple
Lance cette macro dans un classeur vierge
Code:
Sub Créer_MFC()
Dim Rng As Range
Set Rng = [A1:H20] 'adpater ici la plage concernée par la MFC
Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=ADRESSE(LIGNE();COLONNE())=CELLULE(""adresse"")"
With Rng.FormatConditions(1).Borders
.LineStyle = xlContinuous
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
Rng.FormatConditions(1).Interior.Color = 65535
End Sub
Ensuite dans le code de la feuille (clic-droit Visualiser le code)
Mettre la procédure évènementielle ci-dessous
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
 

Michest94

XLDnaute Occasionnel
Bonsoir Michest

=>Michest
Merci pour ton feedback
Alors pour faire simple
Lance cette macro dans un classeur vierge
Code:
Sub Créer_MFC()
Dim Rng As Range
Set Rng = [A1:H20] 'adpater ici la plage concernée par la MFC
Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=ADRESSE(LIGNE();COLONNE())=CELLULE(""adresse"")"
With Rng.FormatConditions(1).Borders
.LineStyle = xlContinuous
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
Rng.FormatConditions(1).Interior.Color = 65535
End Sub
Ensuite dans le code de la feuille (clic-droit Visualiser le code)
Mettre la procédure évènementielle ci-dessous
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
Ok je te fais un retour demain après les tests de ta macro à dispo.
Merci à toi
 

Michest94

XLDnaute Occasionnel
Bonsoir Michest

=>Michest
Merci pour ton feedback
Alors pour faire simple
Lance cette macro dans un classeur vierge
Code:
Sub Créer_MFC()
Dim Rng As Range
Set Rng = [A1:H20] 'adpater ici la plage concernée par la MFC
Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=ADRESSE(LIGNE();COLONNE())=CELLULE(""adresse"")"
With Rng.FormatConditions(1).Borders
.LineStyle = xlContinuous
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
Rng.FormatConditions(1).Interior.Color = 65535
End Sub
Ensuite dans le code de la feuille (clic-droit Visualiser le code)
Mettre la procédure évènementielle ci-dessous
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
bonjour staple1600,
J'ai fait l'essai avec la MFC sur un classeur vierge cela fonctionne NICKEL et je garde précieusement ta macro.
Par contre quand j'essai de l'adapter dans mon projet sur une de mes feuilles cela ne m'affiche pas de couleur de sélection je pense que ma feuille se trouve avec des cellules fusionnées et perturbe le fonctionnement.
Je vais remettre en en forme cette feuille et l'adapté à nouveau.
Merci à toi
Michest
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87