Modification macro code couleur

Bonjour

J'aurais besoin de votre aide pour modifier une macro.

Aujourd'hui cette macro s'applique sur toute la feuille de mon fichier excel.

Quand je tape "ok" peut importe ou la celule s colore en vert.

Mais je voudrais que cette macro s'applique uniquement a 3 colonnes en particuiler mais je ne sais pas trop ce que je dois modifier ... c'est pourqoi je me tourne vers vous.

Merci beaucoup pour votre retour;).

Voici la macro en question :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

Select Case Target.Value

Case "ok"
Target.Interior.ColorIndex = 5 'vert
Target.Borders.LineStyle = xlContinuous

Case "n"
Target.Interior.ColorIndex = 1 'noir
Target.Borders.LineStyle = xlContinuous

Case Else 'autre, pas de bordure et pas de couleur
Target.Interior.ColorIndex = 0 'aucune couleur
Target.Borders.LineStyle = xlNone

End Select

Bonjour,

3 colonnes en particulier LESQUELLES?

si c'est pour les 3 premières colonnes

    If Target.Count > 1 And Target.Column > 3 Then Exit Sub

Si les colonnes sont disjointes:

    If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 6 Then
        If Target.Count = 1 Then

Cdlt

Bonjour Arturo

Merci pour ton retour.

Les colonnes seront disjoints.

Si je comprends bien ta formule le "1", le "3" et le "6" correspondent au numéro de colonne ?

OUI

parfait

merci je regarderai cela ce soir.

Merci pour ton retour.

Bon fin d'am.

Bonjour

Je suis désolé mais je ne vois ou je dois rajouter tes modifications, malgré plusieurs essais je n'arrive pas a la mettre en place..

est ce que ma macro passerait de ça :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub


Select Case Target.Value

Case "ok"
Target.Interior.ColorIndex = 5 'vert
Target.Borders.LineStyle = xlContinuous

...

à ça :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 6 Then Exit Sub

Select Case Target.Value

Case "ok"
Target.Interior.ColorIndex = 5 'vert
Target.Borders.LineStyle = xlContinuous...

mais j'ai l'impression que ça fait l'inverse, les cellules du fichiers dans lesquelles je marque ok passe en bleu sauf les colonnes 1 / 2 et 3... alors que je veux que ce soit ces colonne la qui passent en bleu ;)

Merci de votre coup de main.

Bonjour,

Vous n'avez pas repris le code que j'ai donné:

   If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 6 Then
        If Target.Count = 1 Then

Si c'est la colonne 1 ou la colonne 3 ou la colonne 6 alors,

et si la sélection de cellule =1 alors

Bonjour Arturo83

je suis désolé mais je ne m'y connais pas en vba, je commence tout doucement.

J'ai copié le code If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 6 Then If Target.Count = 1 Then en intégralité que j'ai collé à la place de If Target.Count > 1 Then Exit Sub , je pense que c'est ce qu'il faut faire ? sans touché au reste du code ? mais je n'arrive pas à la faire fonctionner.


Je souhaiterais vraiment que ce code marche pour les colonnes L,M et N.


>Merci pour votre aide.


Comme ceci

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 12 Or Target.Column = 13 Or Target.Column = 14 Then
        If Target.Count = 1 Then
            Select Case Target.Value
            Case "ok"
                Target.Interior.ColorIndex = 5 'vert
                Target.Borders.LineStyle = xlContinuous
            Case "n"
                Target.Interior.ColorIndex = 1 'noir
                Target.Borders.LineStyle = xlContinuous
            Case Else 'autre, pas de bordure et pas de couleur
                Target.Interior.ColorIndex = 0 'aucune couleur
                Target.Borders.LineStyle = xlNone
            End Select
        End If
    End If
End Sub

mais si les colonnes se suivent LMN alors

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("l2:N10000")) Is Nothing Then
        If Target.Count = 1 Then
            Select Case Target.Value
            Case "ok"
                Target.Interior.ColorIndex = 5 'vert
                Target.Borders.LineStyle = xlContinuous
            Case "n"
                Target.Interior.ColorIndex = 1 'noir
                Target.Borders.LineStyle = xlContinuous
            Case Else 'autre, pas de bordure et pas de couleur
                Target.Interior.ColorIndex = 0 'aucune couleur
                Target.Borders.LineStyle = xlNone
            End Select
        End If
    End If
End Sub

Comme je ne connais pas votre fichier , j'ai fixé le nombre de lignes à 10000, sinon on peut rechercher la dernière ligne occupée et remplacer 10000 par cette valeur

Merci pour ton retour, cela fonctionne.

Merci

Si jamais les colonnes bougent de place dans mon fichier, on est d'accord que je devrai modifier les chiffre 12, 13 et 14.

Par contre je comprends pas pourquoi quand je marque ok dans la colonne 12, la case se colore, en 13 idem, en 14 idem, mais cela continue dans la colonne 15,16, 17... ?

Par contre je comprends pas pourquoi quand je marque ok dans la colonne 12, la case se colore, en 13 idem, en 14 idem, mais cela continue dans la colonne 15,16, 17... ?
Euh, ce n'est pas possible, mais comme je n'ai pas le code dans son intégralité, appliquez cette modification:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Not Intersect(Target, Range("l2:N10000")) Is Nothing Then
        If Target.Count = 1 Then
            Select Case Target.Value
            Case "ok"
                Target.Interior.ColorIndex = 5 'vert
                Target.Borders.LineStyle = xlContinuous
            Case "n"
                Target.Interior.ColorIndex = 1 'noir
                Target.Borders.LineStyle = xlContinuous
            Case Else 'autre, pas de bordure et pas de couleur
                Target.Interior.ColorIndex = 0 'aucune couleur
                Target.Borders.LineStyle = xlNone
            End Select
        End If
    End If
Sortie:
    Application.EnableEvents = True
End Sub

ou

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Target.Column = 12 Or Target.Column = 13 Or Target.Column = 14 Then
        If Target.Count = 1 Then
            Select Case Target.Value
            Case "ok"
                Target.Interior.ColorIndex = 5 'vert
                Target.Borders.LineStyle = xlContinuous
            Case "n"
                Target.Interior.ColorIndex = 1 'noir
                Target.Borders.LineStyle = xlContinuous
            Case Else 'autre, pas de bordure et pas de couleur
                Target.Interior.ColorIndex = 0 'aucune couleur
                Target.Borders.LineStyle = xlNone
            End Select
        End If
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Bonjour Arturo83

Merci beaucoup pour tes retours et ta patience.

Je te joint mon fichier test dans lequel j'ai collé (mais non enregistrer) tes derniers codes et cela ne fonctionne pas.

Je rempli L, M et N en ok, la colonne O, P... se colorent toujours.

par contre si je ne marque pas de ok dans N, les colonnes suivantes ne se colorent plus.

Je comprends pas...

Merci encore.

12classeur1.xlsm (14.29 Ko)

Bonjour,

Je te joint mon fichier test dans lequel j'ai collé (mais non enregistrer) tes derniers codes et cela ne fonctionne pas. Je rempli L, M et N en ok, la colonne O, P... se colorent toujours. par contre si je ne marque pas de ok dans N, les colonnes suivantes ne se colorent plus.

Pourtant:

damien7338

avec le fichier joint:

Cdlt

Bonjour Arturo83

Merci pour ton retour.

Quand tu renseignes le premier ok en "L2", peux tu continuer d'en renseigner en "M2" puis en "N2" et tu verras que si tu en renseigne un en "O2""P2""..." il se coloreront également.

Bonsoir,

Ah oui, ça c'est dû à ce qu'excel reproduit le format de la cellule conjointe.

Bon, alors on emploi la manière forte, on supprime la couleur de la colonne O:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Not Intersect(Target, Columns("L:N")) Is Nothing Then
        If Target.Count = 1 Then
            Select Case Target.Value
            Case "ok"
                Target.Interior.ColorIndex = 4 'vert
                Target.Borders.LineStyle = xlContinuous
            Case "n"
                Target.Interior.ColorIndex = 1 'noir
                Target.Borders.LineStyle = xlContinuous
            End Select
        End If
    ElseIf Not Intersect(Target, Columns("O")) Is Nothing Then
        Target.Interior.Color = xlNone 'aucune couleur
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

Parfait

Merci ;)

Rechercher des sujets similaires à "modification macro code couleur"