Colorier Colonnes par Macro

Tonio 74

XLDnaute Occasionnel
Bonjour,
Désolé, mais j'ai posé cette question hier, je pense pas au bon endroit, alors je récidive ici.
Voici quelle était ma question....

"J'aimerais savoir comment faire une Macro pour colorier les colonnes en gris de la plage A2 K2, des qu'il y a un "D" dans celle-ci.
Je me sers déjà des 3 MFC.
Ci-joint Fichier.
Merci beaucoup "
 

Pièces jointes

  • MFC.xls
    23 KB · Affichages: 44
  • MFC.xls
    23 KB · Affichages: 42
  • MFC.xls
    23 KB · Affichages: 40

Dull

XLDnaute Barbatruc
Re : Colorier Colonnes par Macro

Salut Tonio 74, le Form

A mettre dans le module de la feuille
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
EssAi
End Sub

et dans un Module standard

Code:
Sub EssAi()
Dim C As Range
For Each C In Range("A2:K2")
    If C = "D" Then Range(C.Address).Resize(9).Interior.ColorIndex = 15
Next C
End Sub

A tester

EDITION: Petite Modif en cas de changement de lettre en ligne 2

Code:
Sub EssAi()
Dim C As Range
For Each C In Range("A2:K2")
    If C = "D" Then
        Range(C.Address).Resize(9).Interior.ColorIndex = 15
            Else
        Range(C.Address).Resize(9).Interior.ColorIndex = xlNone
    End If
Next C
End Sub

Re Edith: Salut Robert:)
Bonne Journée
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Colorier Colonnes par Macro

Bonjour Tonio, Dull, bonjour le forum,

Une autre approche que celle de Dull avec la macro événementielle Change qui agit quand tu édites une cellule de la plage A2:K2. Le code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As XlColorIndex 'déclare la variable c (Couleur)

If Selection.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
If Application.Intersect(Target, Range("A2:K2")) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage A2:K2, sort de la procédure
c = IIf(UCase(Target.Value) = "D", 15, xlNone) 'définit la couleur c (gris si la cellule cible vaut "D" ou "d", sinon aucune couleur)
Range(Cells(2, Target.Column), Cells(10, Target.Column)).Interior.ColorIndex = c 'colore la plage de la couleur c
End Sub
Le fichier :
 

Pièces jointes

  • Tonio_v01.xls
    35.5 KB · Affichages: 34

Robert

XLDnaute Barbatruc
Repose en paix
Re : Colorier Colonnes par Macro

Bonjour le fil, bonjour le forum,

On peut simplifier comme ça :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Cells.Count > 1 Then Exit Sub 'su plusieurs cellules sélectionnées, sort de la procédure
If Application.Intersect(Target, Range("A2:K2")) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage A2:K2, sort de la procédure
'colore la plage  des lignes 2 à 10 de gris si la cellule cible vaut "D" ou "d", sinon aucune couleur
Range(Cells(2, Target.Column), Cells(10, Target.Column)).Interior.ColorIndex = IIf(UCase(Target.Value) = "D", 15, xlNone)
End Sub
 

Discussions similaires

Réponses
0
Affichages
938

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof