Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Couleurs dans cellules

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bernardrustrel

XLDnaute Occasionnel
Bonjour à tous.
Dans le fichier joint j'aimerais pouvoir colorier les plages D2:E2 et J2:K2 en Jaune et la plage G2:H2 en bleu.
Ces couleurs sont respectivement représentées en N1 et O1.
j'ai essayé une solution avec "Worksheet_SelectionChange(ByVal Target As Range)" mais voilà cette dernière agit sur les valeurs situées en N2 et O2 qui sont issues de la fonction SOMMESICOULEUR et que je ne dois pas modifier.
Pour moi le nec plus ultra serait:
- sélectionner la plage à colorier
- sélectionner la couleur à appliquer ( il m'est possible de mettre un caractère tel le J ou B) si cela peut simplifier l'application de la couleur),
J'explique: si dans les différentes plages j'y écris un J (par exemple) alors les cellules concernées prennent la couleur Jaune mais le J doit disparaître car je dois ensuite saisir une valeur numérique dans ces cellules.
Par avance je vous remercie devotre aide.
Cordialment. Bernard
 

Pièces jointes

Re : Couleurs dans cellules

Bonjour bernardrustrel,

Voyez le fichier joint et cette macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim jaune&, bleu&, r As Range, x$
jaune = [N1].Interior.Color 'cellule à adapter
bleu = [O1].Interior.Color
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In r
  x = Mid(r, 3)
  If LCase(Left(r, 2)) = "jj" Then
    r.Interior.Color = jaune
    If IsNumeric(x) Then r = CDbl(x) Else r = x
  ElseIf LCase(Left(r, 2)) = "bb" Then
    r.Interior.Color = bleu
    If IsNumeric(x) Then r = CDbl(x) Else r = x
  Else
    r.Interior.ColorIndex = xlNone 'RAZ
    x = r.Formula: r = Chr(1): r = x 'recalcul des fonctions volatiles
  End If
Next
Application.EnableEvents = True
End Sub
Par ailleurs j'ai rendu volatile la fonction SOMMESICOULEUR.

A+
 

Pièces jointes

Re : Couleurs dans cellules

Re,

Une solution avec touches de raccourci pour lancer ces macros :

Code:
Sub Jaune()
'touches Ctrl+J
If Intersect(Selection, [N1:O1]) Is Nothing Then
  Selection.Interior.Color = [N1].Interior.Color
  [A1] = [A1].Formula 'recalcul de la fonction volatile
End If
End Sub

Sub Bleu()
'touches Ctrl+B
If Intersect(Selection, [N1:O1]) Is Nothing Then
  Selection.Interior.Color = [O1].Interior.Color
  [A1] = [A1].Formula 'recalcul de la fonction volatile
End If
End Sub

Sub Efface()
'touches Ctrl+E
If Intersect(Selection, [N1:O1]) Is Nothing Then
  Selection.Interior.ColorIndex = xlNone
  [A1] = [A1].Formula 'recalcul de la fonction volatile
End If
End Sub
Important : la fonction SOMMESICOULEUR a été rendue volatile.

Fichier (2).

A+
 

Pièces jointes

Re : Couleurs dans cellules

Re,

Au post #1 vous dites qu'il ne faut pas modifier les valeurs en N2 et O2.

Cela ne me paraît pas cohérent, mais dans ce cas retirez Application.Volatile dans SOMMESICOULEUR.

A+
 
Re : Couleurs dans cellules

Bonjour à tous

Job75
Pour le plaisir de te croiser et pour le fun
Une trois en un (sans fromage) 😉
Code:
Sub Coloriage(Choix As Byte)
Dim Couleurs
Couleurs = Array(6, 33, xlNone)
If Intersect(Selection, [N1:O1]) Is Nothing Then
  Selection.Interior.ColorIndex = Couleurs(Choix)
  [A1] = [A1].Formula 'recalcul de la fonction volatile
End If
End Sub
Code:
Sub Jaune()
Coloriage 0
End Sub
Code:
Sub Bleu()
Coloriage 1
End Sub
Code:
Sub Efface()
Coloriage 2
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
Réponses
18
Affichages
2 K
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…