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+

Michest94

XLDnaute Occasionnel
Re

=>Michest
Avec cette version, la plage de cellules n'est pas figée
Tu sélectionnes par le biais d'un InputBox.
(Il faut sélectionner les cellules avec la souris quand l'InputBox s'affiche)
VB:
Sub Créer_MFC_v2()
Dim Rng As Range
Set Rng = Application.InputBox("Plage de cellules concernées par la MFC?", "Surbrillance Cellue Active", , , , Type:=8)
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
NB:
Il faudra toujours penser à mettre également la procédure évènementielle Selection_Change() dans la feuille.
Merci à toi Staple1600 je regarde et te dis.
 

soan

XLDnaute Barbatruc
Inactif
@Michest

voilà, cette fois c'est ok ! 😊 (Michest l'a testé et vérifié)
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  On Error GoTo Fin 'pour éviter l'erreur due à ton fichier image sur F:
  Const c01& = 12874308 'couleur 1 : bleu
  Const c02& = 49407    'couleur 2 : jaune
  Dim plg As Range, adresselien$
  Application.ScreenUpdating = 0
  With Target
    If .CountLarge <> 3 Then GoTo 1
    If .Column <> 3 Then GoTo 1
    Set plg = Range("C28:E28, C33:E36, C41:E41, C46:E53")
    If Intersect(Target, plg) Is Nothing Then GoTo 1
    ActiveSheet.Unprotect
    plg.Interior.Color = c01: plg.Font.ColorIndex = 2
    With Range(.Address(0, 0))
      .Interior.Color = c02: .Font.ColorIndex = 0
    End With
    ActiveSheet.Protect
  End With

1 Range("H7").Select
   '... suite du code VBA initial

Fin:
End Sub
soan
 

Pièces jointes

  • feuilleDOC1.xlsm
    437.3 KB · Affichages: 7
Dernière édition:

Michest94

XLDnaute Occasionnel
@Michest

ok, merci pour ton retour du post #40 ! 😊

j'vais aller dîner 🍔, alors j'lirai ton autre retour plus tard...


soan
Bon appétit, j'ai testé sur mon fichier source cela à l'air parfait faut que je paramètre tout mes liens et c'est TOP!
Petite question ! Eventuellement est ce que je peux revenir vers toi sur d'autres petites énigmes d'excel ! Si oui peut on passé en privé ou par ce fil ...
 

soan

XLDnaute Barbatruc
Inactif
@Michest

j'suis ravi qu'ça marche bien sur ton fichier source ! 😊

bien sûr, tu peux revenir pour d'autre énigmes excel, mais sur le forum,
car c'est interdit par la charte d'aider en privé ; d'autre part, comme
je ne sais pas tout faire, je ne peux jamais rien garantir d'avance ! ;)

(c'est aussi pour ça que j'préfère choisir moi-même mes sujets : j'essaye de répondre
quand c'est dans mes compétences, et si j'en ai le temps)


soan
 

Michest94

XLDnaute Occasionnel
@Michest

j'suis ravi qu'ça marche bien sur ton fichier source ! 😊

bien sûr, tu peux revenir pour d'autre énigmes excel, mais sur le forum,
car c'est interdit par la charte d'aider en privé ; d'autre part, comme
je ne sais pas tout faire, je ne peux jamais rien garantir d'avance ! ;)

(c'est aussi pour ça que j'préfère choisir moi-même mes sujets : j'essaye de répondre
quand c'est dans mes compétences, et si j'en ai le temps)


soan
Très bien Soan merci à toi et bonne soirée.
 

Michest94

XLDnaute Occasionnel
@Michest

voilà, cette fois c'est ok ! 😊 (Michest l'a testé et vérifié)
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  On Error GoTo Fin 'pour éviter l'erreur due à ton fichier image sur F:
  Const c01& = 12874308 'couleur 1 : bleu
  Const c02& = 49407    'couleur 2 : jaune
  Dim plg As Range, adresselien$
  Application.ScreenUpdating = 0
  With Target
    If .CountLarge <> 3 Then GoTo 1
    If .Column <> 3 Then GoTo 1
    Set plg = Range("C28:E28, C33:E36, C41:E41, C46:E53")
    If Intersect(Target, plg) Is Nothing Then GoTo 1
    ActiveSheet.Unprotect
    plg.Interior.Color = c01: plg.Font.ColorIndex = 2
    With Range(.Address(0, 0))
      .Interior.Color = c02: .Font.ColorIndex = 0
    End With
    ActiveSheet.Protect
  End With

1 Range("H7").Select
   '... suite du code VBA initial

Fin:
End Sub
soan
Bonsoir SOAN,

En fait dans mon projet quand j'applique ton code qui fonctionne très bien pour les couleurs j'ai une fenêtre qui me demande d'ôter la protection quand je veux naviguer sur les items.
Merci.
@+
 

Pièces jointes

  • 1.jpg
    1.jpg
    45 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 457
Membres
103 219
dernier inscrit
Akyrah