WorsheetCHANGE ET MFC
Bonjour,
Je n'arrive pas a trouver pourquoi sa ce déclenche pas;
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 And Target.Row < 6 Then
If UCase(Target) = "CNL" Then
Range(Target.Offset(0, 4), Target.Offset(0, 11)).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark2
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Font.Italic = True
End If
End If
End SubEn bref ce que je veux faire
a parti de la ligne 6
et quand je met CNL dans une des cellules de la colonne 2 , que la cell( 4 à 11 ) et (14 à 19) change de couleur
et bien si je supprime le CNL que la ligne redevienne normal
Merci d'avance
Bonjour,
Ton code est contradictoire avec ce que tu déclares vouloir faire !
Et mets un fichier si tu veux qu'on se rende compte de ce que tu veux vraiment.
(Et élimine donc ces Select et Selection et la flopée de commande inutile qui ne concerne pas ce que tu veux précisément définir, on y gagnera en clarté.)
Cordialement.
Bonjour,
oui dsl je pensais l'avoir joint le fichier
Alors effectivement j'ai changé les deux paramètres pour que sa fonctionne , mais ma question à présent est si je marque dans la colonne B "CNL" et que finalement je me suis tromper de ligne je le supprimer, mes cellules restent quand même en couleur au lieu de redevenir normal (blanche), et si je supprime plusieurs CNL en même temps il me fait un débogage, c'est la que je coince.
Cdlt
Bonjour,
Sous réserve de ce que tu veux précisément... J'ai déduit du modèle : si "cnl" >> couleur de fond et police rouge et italique...
A confirmer.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, sta As Boolean
If Target.Column = 2 And Target.Row > 6 Then
For Each c In Target
sta = False
If UCase(c.Value) = "CNL" Then sta = True
With Range(c.Offset(0, 2), c.Offset(0, 9))
If sta Then
.Interior.Color = RGB(201, 194, 209)
.Font.Color = vbRed
Else
.Interior.ColorIndex = xlColorIndexNone
.Font.ColorIndex = xlColorIndexAutomatic
End If
.Font.Italic = sta
End With
With Range(c.Offset(0, 12), c.Offset(0, 17))
If sta Then
.Interior.Color = RGB(201, 194, 209)
.Font.Color = vbRed
Else
.Interior.ColorIndex = xlColorIndexNone
.Font.ColorIndex = xlColorIndexAutomatic
End If
.Font.Italic = sta
End With
Next c
End If
End SubCordialement.
Petit oubli de ma part : ajouter une condition pour l'exécution.... :
If Target.Column = 2 And Target.Row > 6 And Target.Columns.Count = 1 ThenEn prenant en compte la modification simultanée de plusieurs cellules (par exemple effacement de plusieurs "cnl"), il convient de veiller que Target ne déborde pas de la colonne B...
Nikel merci c'est exactement sa:
J'ai encore une règle pour la couleur rouge et jaune mais j'ai une bonne base pour continuer
Merci encore
Bonjour
est-il possible de faire des worsheekchange avec plusieurs condition et couleur
j'ai commencer a mettre a jour mon fichier j'ai besoin de 4 couleurs différente (gris / orange / rouge / bleu)
j'ai commencer avec le orange mais sa me ait bugger mon gris
le gris fonctionnait nickel quand je clic ( ou met un X) dans la colonne CNL le gris se mettais au bon endroit
le orange c'est pour mettre en valeur les case oublier (entre E et F) et (P et S) ; quand U est remplit du orange se met si les case sont vide
le rouge la même chose que le orange sauf que la date en colonne A est inférieur a la date d'aujourd'hui
Le bleu si D <>"" et O = "" alors entre P et U devient bleu
si O <>"" et D = "" alors entre G et L devient bleu
En gros voila le final que j'essais d'avoir, mais vue que sa bug dans tout les sens ne sais pas si c'est possible a réaliser
Si tu as une idée je suis preneur je viens de passer 4 heures dessus a trouver une solution =)
Bonsoir,
Regarde le détail de la macro. Les plages à colorer (ou décolorer) sont définies dans des instructions With... End With. A l'intérieur de chacune de ces instructions, les lignes de commandes commençant par un point réfèrent à la plage définie en tête de l'instruction.
Cordialement.