Vba-colorier ligne selon date cellule

Celeda

XLDnaute Barbatruc
Bonjour,

Après avoir testé (et découvert surtout) quelques macros qui coloriaient les lignes, je n'arrive pas à m'en sortir et je fais donc appel à vous.

Dans le fichier, je souhaite par macro évenementielle colorier la ligne en color index 38 si date dans la colonne 0 et color index 15 si date dans la colonne P
sinon rien du tout.
Je ne passe pas par mfc en raison déjà de plusieurs coloriages :D

Merci beaucoup
 

Pièces jointes

  • ColorierLigneDate.zip
    8.1 KB · Affichages: 151

mromain

XLDnaute Barbatruc
Re : Vba-colorier ligne selon date cellule

Bonjour Celeda,

Voici un code à mettre sur la feuille (clic droit sur l'onglet > Visualiser le code).
Il se déclenche à chaque changement de valeur dans une des cellules de la feuille.
VB:
'Evènement "_Change" de la feuille.
'Se déclanche à chaque changement de cellule (lorsqu'on valide la saisie).
'"Target" représente la cellule (ou zone) qui vient de changer.

Private Sub Worksheet_Change(ByVal Target As Range)

    
    'Vérifier si la cellule qui vient de changer est dans la colonne O ou P.
    'Sinon, quitter la macro.
    If Application.Intersect(Target, Range("O:P")) Is Nothing Then Exit Sub
        
        
    'Si Target est dans la colonne O est que la valeur saisie est une date
    If Not Application.Intersect(Target, Range("O:O")) Is Nothing And IsDate(Target.Value) Then
        Target.EntireRow.Interior.ColorIndex = 38
        
    'sinon, on effectue le test sur la colonne P
    ElseIf Not Application.Intersect(Target, Range("P:P")) Is Nothing And IsDate(Target.Value) Then
        Target.EntireRow.Interior.ColorIndex = 15
    End If
    
End Sub
a+
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Vba-colorier ligne selon date cellule

Bonjour,
Quand la macro doit-elle s'activer ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 5 Or Target.Count > 1 Then Exit Sub
If Target.Column = 15 And IsDate(Target) Then
    Rows(Target.Row).Interior.ColorIndex = 38
ElseIf Target.Column = 16 And IsDate(Target) Then
    Rows(Target.Row).Interior.ColorIndex = 15
Else
    Rows(Target.Row).Interior.ColorIndex = xlNone
End If
End Sub
A+
kjin
 

Celeda

XLDnaute Barbatruc
Re : Vba-colorier ligne selon date cellule

Bonjour,

Merci pour les codes mromain (toujours très pratiques les commentaires) et kjin : les deux sont parfaits.
Merci chris pour le rappel (je privilégie d'habitude la mfc mais là, cela devenait compliqué à gérer);

Merci.
 

Discussions similaires