Colorier cellule sous condition
Bonsoir,
je voudrais que les cellules de la colonne "d" se colorie en gris si la cellule en colonne "c" est non vide
Je dois répéter ceci sur la même feuille dans le colonne "G" et "H" , "K" et "L" ect
J'aimerais pouvoir adapter ce code facilement à n'importe quelle colonne
D'avance merci
Bonjour Pen2022 et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)
Concernant votre demande, il faut appliquer une MFC (Mise en Forme Conditionnelle) avec en formule
=$C1<>""Merci pour votre participation
Cordialement
Bonjour,
En sélectionnant la colonne D puis mise en forme conditionnelle/nouvelle règle/utiliser une formule pour déterminer pour quelle cellules le format sera appliqué. Dans le champs "Appliquer une mise en forme aux valeurs........" vous entrez la formule =C1<>""et vous appliquez le format de remplissage désiré. Ensuite vous sélectionnez les colonnes A à D et vous étirez cette mise en forme aussi loin que vous le désirez vers la droite. Voici le résultat:
Bonjour à tous, excusez moi de ne pas m'être présenté, petit nouveau hier soir même déjà pendant la nuit...
Je suis chef de dépôt chez un négociant en bières
Je dois réaliser une cartographie de notre dépôt et pour cela, j'ai un fichier excell qui reprend toutes les places de stockages disponibles dans le dépôt et je dois y afficher en regard les n° des produits qui y sont affectés. Certaines places sont vides et c'est pourquoi je fais appel à vous.
Je voudrais que certaines cellules se colorient en fonction de données s'affichant dans d'autres cellules. Par ex, si C2 = "x", alors D2 est grisé ou si E2 n'est pas vide, alors E2 est en vert. J'ai déjà une MFC mais dans un fichier de 40 feuilles avec 120 lignes sur 10 groupes de colonnes, ça fait beaucoup et j'aurais voulu avoir une solution en VBA.
J'ai déjà expérimenté quelques codes mais je n'y comprend pas grand chose pour pouvoir les adapter à mon problème, donc quelque chose de facilement adaptable serait nickel.
Je joint un petit fichier allégé pour mieux vous aiguiller.
Est ce que le titre est complet, je ne pense pas, il faudrait ajouter VBA mais comment?
Grand merci pour votre aide
Bonjour,
Un essai
Là ça fait plusieurs boucles sur toutes les feuilles. C'est aussi un peu lourd. Il faut aussi que toutes les feuilles soient sur la même structure.
Hello, merci pour cette macro, j'ai essayé et cela me semble très lourd....
Je pensais plus à un code sur chaque feuille avec de simple conditions du style plus bas
Ceci colorie des cellules mais je ne sais pas comment l'adapter
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Range("A1:C3, A5:C10, A15:C20") 'Sélection des plages où doit s'appliquer la MeF
'Supprime les MFC existantes
.FormatConditions.Delete
'Ajoute une condition (Vrai lorsque la cellule est non vide)
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=$E$5"
With .FormatConditions(1)
'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
.Interior.Color = 16771071 '.Interior.ColorIndex = 15 'Gris
End With
End With
End SubJe n'ai pas vraiment besoin de bouton pour exécuter une macro
Grand merci
Hello
Je ne savais pas qu'on pouvait utiliser la fonction "Décaler" en MFC, plutôt, je n'y avais pas pensé
C'est nickel et vachement plus rapide que l'usine à gaz que j'avais construite dans les MFC de mon fichier original.
Grand merci, à bientôt sans doute.
bonsoir,
avec une macro pour créer ces MFCs
Sub MFCs()
For i = 2 To ThisWorkbook.Worksheets.Count 'à partir de la 2ième feuille
With Worksheets(i)
Set ur = .UsedRange
Set c = .Range("D2").Resize(ur.Rows.Count, ur.Columns.Count)
Set c1 = c.Cells(1).Offset(1 - c.Row)
End With
With c
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=et(" & c1.Address(1, 0) & "<>"""";" & c.Cells(1).Address(0, 0) & "<>"""")"
With .FormatConditions(1)
'.SetFirstPriority
.Interior.Color = 5296274
.StopIfTrue = False
End With
.FormatConditions.Add Type:=xlExpression, Formula1:="=" & c.Cells(1, 0).Address(0, 0) & "=""x"""
With .FormatConditions(2)
.SetFirstPriority
.Interior.Color = 6184546
.StopIfTrue = True
End With
End With
Next
End Sub