Colorier Colonnes par Macro

  • Initiateur de la discussion Initiateur de la discussion Tonio 74
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
  • Question Question
Réponses
5
Affichages
936
jui42
J
Réponses
6
Affichages
888
T
Réponses
2
Affichages
1 K
Tava94
T
Réponses
7
Affichages
1 K
O
Réponses
4
Affichages
1 K
Olocsob
O
F
  • Question Question
Réponses
5
Affichages
1 K
Retour