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 Sub

En 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

6test-mfc.zip (15.16 Ko)

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 Sub

Cordialement.


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 Then

En 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 =)

6tesf-mfc-2.zip (41.73 Ko)

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.

Rechercher des sujets similaires à "worsheetchange mfc"