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 SubSi les colonnes sont disjointes:
If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 6 Then
If Target.Count = 1 ThenCdlt
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 ?
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 ThenSi 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 Submais 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 SubComme 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 Subou
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 SubBonjour 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.
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:
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 SubCdlt