Mise en surbrillance d'une ligne

Bonjour le forum,

J'ai utiliser un code sur le site de Microsoft qui me permet de mettre en surbrillance une ligne en fonction d'une cellule. dont voici :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    Application.ScreenUpdating = False
    ' Clear the color of all the cells
    Cells.Interior.ColorIndex = 0
    With Target
        ' Highlight the entire row and column that contain the active cell
        .EntireRow.Interior.ColorIndex = 8
        .EntireColumn.Interior.ColorIndex = 8
    End With
    Application.ScreenUpdating = True
End Sub

le lien du site : Mettre en surbrillance la cellule, la ligne ou la colonne active | Microsoft Learn

Le problème c'est que les cellules que ou je clic sont sur un tableau structuré et comporte déjà une couleur. Je voudrais donc que quand je sélectionne une cellule sur une autre ligne, alors la ligne d'avant reprend ça couleur d'origine. J'ai essayer en utilisant un variable pour garder en mémoire la couleur et une autre la cellule mais après je ne sais pas comment mettre à jours la ligne. Merci pour votre aide.

Cordialement.

Dommage, il n'y a pas de fichier ... je t'expose le principe :

  • Tu nommes une cellule (exemple "LIGNE_EN_COURS) dans une de tes feuilles Excel, cellule toujours accessibles de préférence (sinon il faudra gérer le unprotect / protect) mais qui peut être sur une feuille ou une colonne masquée. Elle va contenir le n° de la ligne courante.
  • Dans l'évènement "Worksheet_SlectionChange" de la feuille concernée tu initialises LIGNE_EN_COURS par Target.Row
  • Sur la feuille concernée, tu définis une MFC sur le tableau où la règle est "=LIGNE()=LIGNE_EN_COURS" avec la couleur que tu souhaites

Voilà.

Bonjour à tous, de mon coté si je n'ai pas personnalisé le tableau structuré avec des couleurs perso ... il reprend bien sa couleur aprés

Cells.Interior.ColorIndex = 0

Sinon au pire réattribuez votre modèle style de tableau avant le changement de couleur de ligne qui suivra.

exemple

ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleMedium9"

Bonjour,

Peut-être un truc comme ça?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    With Range("Tableau1")
        .Interior.ColorIndex = xlColorIndexNone
        .Rows(1).Offset(-1).Interior.ColorIndex = xlColorIndexNone
        If Not Intersect(Range("Tableau1"), Target(1, 1)) Is Nothing Then
                .Rows(Target.Row - 1).Interior.Color = RGB(239, 210, 70)
                Target.Interior.Color = RGB(455, 60, 100)
        End If
    End With
End Sub

Slts

Bonjour,

Merci beaucoup pour votre aide, je m'excuse de ne pas avoir envoyer le fichier.

Cylfo t'a méthode ne permet pas de garder en mémoire l'ancienne couleur de la ligne j'ai l'impression.

boss_68 j'ai essayer ta méthode mais le code efface toute les ancienne couleurs du tableau. de plus il y a un décalage quand je sélectionne une ligne il me change la couleur de la ligne qui ce situe 3 ligne en dessous, comme sur ce screen :

image

dXmenpl, malheureusement je n'ai pas trop compris ta méthode, je vous envoie sinon directement mon fichier en pièce jointe. Je créer les couleurs de la ligne avec un code qui en fonction du dernier caractère de la dernière lettre de la colonne référence ( colonne C ), R en bleu et V en orange. c'est pour cela que je veux garder les anciennes couleurs. Sinon je fait tout ça car je voudrais que l'utilisateur puisse supprimer une ligne quand il sélectionne une cellule( qui change de couleur --> permet d'avoir un meilleur visuel sur ce qu'il va supprimer), pour cela je vais par la suite ajouter un bouton "supprimer" sur la feuille REGISTRE DEFAUT. Merci infiniment pour votre aide.

3test-2.xlsm (293.78 Ko)

Cordialement.

bonjour le fil,

avec un MFC, une plage nomée "Ma_Selection" et l'event change_Selection

5test-2.xlsm (283.36 Ko)

Bonjour,

Merci beaucoup BsAlv, c'est exactement ce que je cherchais, à une exception prés je voudrais changer la couleur de la ligne entière, car actuellement, seulement la cellule sélectionnée change de couleur.

image

Merci encore pour ton aide.

Cldt.

re, c'est facile, on supprime la partie "colonne" dans la formule MFC. Mais je suppose que vous sélectionnez uniquement 1 cellule, alors cette formule sera encore plus simple, à vous de choisir entre

=AGREGAT(14;6;1/(LIGNE(Ma_Selection)=LIGNE(A5));1)   = plusieurs lignes
=(LIGNE(Ma_Selection)=LIGNE(A5))    = seulement 1 cellule/ligne
4test-2.xlsm (283.31 Ko)

Re, super merci. A oui je comprend mieux, mais c'est vraiment simple finalement.

Passe une bonne journée!

Rechercher des sujets similaires à "mise surbrillance ligne"