Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Laosurlamontagne

XLDnaute Occasionnel
Bonjour !

Je recherche un moyen de colorier des cellules sous excel en fonction d'une valeur contenue dans une cellule. Je connais les mises en forme conditionnelles mais ici: il s'agirait de colorier les x cellules de la ligne B (par exemple) en commençant par B2 et jusqu'à B(2+x), sachant que la valeur x serait dans la case B1.

Je ne vois que du VBA pour faire cela, mais... hips ! Je ne suis pas très très fort en ce domaine, tandis que vous...

Sauriez-vous m'aider ?

Merci !
 

tototiti2008

XLDnaute Barbatruc
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Bonjour Lao, Bonjour Rachid, Bonjour Victor, Bonjour job,

Pour la MFC de Job qui ne se met pas à jour, on dirait que ce n'est qu'un problème de "rafraichissement" de l'écran
Si on utilise l’ascenseur, les couleurs se corrigent, il me semble
et même avec la 2ème formule, si je l'applique à toute la colonne j'observe la même chose (même chose avec la formule que j'avais proposée)

assez bizarre, en mettant la macro là, ça a l'air de s'arranger....

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = True
End Sub
 

Laosurlamontagne

XLDnaute Occasionnel
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Vous avez raison, surtout que ça se complique... (aussi parce que je pensais m'en sortir tout seul après ce premier coup de main...).

Le fichier joint représente le résultat final que je recherche. La coloration des cellules marche super bien mais je voudrais "contrôler" le début de la MFC (i.e la première colonne à colorer) et la couleur selon celle de la première colonne (A).

Auriez-vous une suggestion ?
 

Pièces jointes

  • Classeur3.xlsx
    9.2 KB · Affichages: 253
  • Classeur3.xlsx
    9.2 KB · Affichages: 195
  • Classeur3.xlsx
    9.2 KB · Affichages: 185

tototiti2008

XLDnaute Barbatruc
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Re,

Sélectionne de C2 à L6

essaye avec la formule là pour ta MFC :

Code:
=ET(C$1>=$A2;C$1<$A2+$B2)

choisis une couleur de fond unique
puis reprend les MFC ligne par ligne pour changer la couleur
 

Victor21

XLDnaute Barbatruc
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Bonjour à tous.

Solution miroir à celle de tototiti :) qui évite de reprendre la mefc ligne par ligne :
Appliquer la couleur sur toute la ligne, et utiliser en MEFC :
=OU(C$1<$A2;C$1>$B2+$A2-1)
, avec comme couleur de fond : aucune.
 

Pièces jointes

  • NoMefc.xls
    33.5 KB · Affichages: 296

job75

XLDnaute Barbatruc
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Re,

Pour la MFC de Job qui ne se met pas à jour, on dirait que ce n'est qu'un problème de "rafraichissement" de l'écran

Effectivement en mettant à jour l'écran par Application.ScreenUpdating = True plus de problème.

Merci Marc d'avoir cherché, c'est un phénomène pas très courant.

A+
 

tototiti2008

XLDnaute Barbatruc
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Re,

c'est un phénomène pas très courant

C'est toi qui l'a détecté, je n'avais jamais vu ça non plus
Et je ne trouve pas le rafraichissement forcé très satisfaisant, mais je n'ai rien trouvé de plus simple
Bizarre, mais il est vrai que je n'ai pas souvent fait de MFC sur des lignes ou colonnes entières... Si quelqu'un a une solution sans macro, on prend ;)
 

Laosurlamontagne

XLDnaute Occasionnel
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

RE-Moi !

Finalement, je suis repassé sous macro car j'avais beaucoup de couleur et ça devenait compliqué à gérer (surtout si on souhaite ajouter des lignes entre 2 dans mon tableau). J'ai réussi à pondre ceci :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [D6:H283]) Is Nothing Then
Application.EnableEvents = False
With Target

a = Cells(Target.Row, 7).Value + 8
b = Cells(Target.Row, 8).Value
Range("I" & Target.Row, Range("IF" & Target.Row)).Clear
Cells(Target.Row, a).Value = Cells(Target.Row, 4).Value
couleur = Cells(Target.Row, 4).Interior.ColorIndex


If Cells(Target.Row, 8).Value <> 1 Then
Range(Cells(Target.Row, a), Cells(Target.Row, a + b - 1)).Interior.ColorIndex = Cells(Target.Row, 4).Interior.ColorIndex
Else
Cells(Target.Row, a).Interior.ColorIndex = Cells(Target.Row, 4).Interior.ColorIndex
End If

Application.EnableEvents = True

End With
End If
End Sub

Qui réagit si les colonnes D à H sont modifiées. La valeur numérique de colonne de départ des cellules à colorer est en G et le nombre à colorer en H. La couleur à copier est en D.
Par contre, elle ne reproduit absolument pas la bonne couleur, je ne comprend pas... Auriez-vous une idée du pourquoi ? Merci !
 

Fo_rum

XLDnaute Accro
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Bonsoir,

peut-être avec cette macro :confused:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim col As Long
  If Intersect(Target, Range("G2:G6")) Is Nothing Then Exit Sub
  Target.Offset(, 1).Resize(1, 200).Clear 'adapter le 200
  If Target = "" Then Exit Sub
  col = Target.Offset(, -3)
  Target.Offset(, col).Resize(1, Target).Interior.Color = Target.Offset(, -3).Interior.Color
End Sub

A noter que Interior.ColorIndex n'est pas Interior.Color !
 

Pièces jointes

  • CouleurSi.xlsm
    16.8 KB · Affichages: 74

Laosurlamontagne

XLDnaute Occasionnel
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Bonjour !!

Merci pour ton retour et ta proposition. Je l'ai modifié comme cela car les colonnes D à G sont susceptible de modifier les valeurs de début et de fin de ligne à colorer :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim col As Long, fin As Long
  If Intersect(Target, Range("D3:G7")) Is Nothing Then Exit Sub
  Cells(Target.Row, 8).Resize(1, 200).Clear
  If Target = "" Then Exit Sub
  col = Cells(Target.Row, 6)
  fin = Cells(Target.Row, 7)
  Cells(Target.Row, col + 7).Resize(1, fin).Interior.Color = Cells(Target.Row, 4).Interior.Color
End Sub

Juste une question à la hauteur de mon niveau en VBA :p : ça sert à quoi le "option explicit" au début ?
 

Pièces jointes

  • Copie de CouleurSi-1.xlsm
    17.2 KB · Affichages: 83

Fo_rum

XLDnaute Accro
Re : Colorier un certain nombre de cellule en fonction de la valeur d'une cellule

Bonjour,

Bonjour !!
...
If Target = "" Then Exit Sub
...[/CODE]

Juste une question à la hauteur de mon niveau en VBA :p : ça sert à quoi le "option explicit" au début ?

Pour éviter l'erreur en cas de saisie non numérique remplace cette ligne par
Code:
If Target = "" Or Not IsNumeric(Target) Then Exit Sub

Bien que facultative, je m'astreins à l'utiliser*. Elle permet de relever des erreurs de programmation et souvent d'économiser de la mémoire (une variable en Byte en utilise moins que lorsqu'elle n'est pas déclarée; dans ce dernier cas elle est, sous entendu, prise comme Variant) et du temps. De plus, quand j'écris une macro je veux la contrôler totalement : savoir ce ce que je fais.

* dans l'éditeur, Outil -->Option--> Editeur, cocher Déclaration de variables obligatoire fait apparaître cette option dans tous les modules sans avoir à la saisir. On peut l'effacer dans un module si on n'en veut pas là.
 

Teophile

XLDnaute Nouveau
Bonjour,
Sans macro, de ligne en ligne : Comment faire pour appliquer automatiquement le format de la cellule B12 sur le Nbre de cellules calculées ? Exemple : E12;F12;G12;H12;I12

Merci de vos réponses
Teophile
 

Pièces jointes

  • Mise en forme cond-010.xlsx
    12.5 KB · Affichages: 3

Discussions similaires