Affichage : griser la ligne dont la cellule est séléctionnée

Bonjour,

J'ai un tableau excel avec en colonne A un intitulé et de nombreuses colonnes par la suite.

Lorsque j'utilise le tableau en "lecture" et que je consulte une donnée dans une colonne éloignée ( exemple colonne G)

je risque de me tromper dans la lecture de l'intitulé de la colonne A

est il possible de mettre en évidence la ligne dans laquelle est situé le curseur ( un peu comme le numéro de ligne qui est grisé, mais j'aimerai que cela soit plus visible en mettant en évidence toute la ligne. )

Merci pour vos conseils et astuces

bonne journée

Bonjour,

Vous pouvez aller dans "Affichage" --> "Figer les volets" pour garder la/les premières colonnes toujours visibles même lorsque vous affichez les colonnes les plus à droite de votre classeur.

Pour changer la couleur de la ligne, c'est sans doute possible de le faire grâce à une macro événementielle, mais ça risque d'être un peu lourd, et ça implique d'enregistrer le classeur au format ".xlsm".

BOnjour, Romm1 et bonjour Pedro

Sinon dans le Worksheet de la feuille concernée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim l%, c%, Dl%, Dc%
Dl = Cells(Rows.Count, 1).End(xlUp).Row
Dc = Cells(1, Columns.Count).End(xlToLeft).Column
Cells.Interior.ColorIndex = 2
l = ActiveCell.Row
c = ActiveCell.Column
Range(Cells(l, 1), Cells(l, Dc)).Interior.ColorIndex = 4
Range(Cells(1, c), Cells(Dl, c)).Interior.ColorIndex = 4
End Sub

nota : celle-ci tu n'en auras pas besoin puisque c'est pour la colonne

Range(Cells(1, c), Cells(Dl, c)).Interior.ColorIndex = 4

BOnjour, Romm et bonjour Pedro

Sinon dans le Worksheet de la feuille concernée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim l%, c%, Dl%, Dc%
Dl = Cells(Rows.Count, 1).End(xlUp).Row
Dc = Cells(1, Columns.Count).End(xlToLeft).Column
Cells.Interior.ColorIndex = 2
l = ActiveCell.Row
c = ActiveCell.Column
Range(Cells(l, 1), Cells(l, Dc)).Interior.ColorIndex = 4
Range(Cells(1, c), Cells(Dl, c)).Interior.ColorIndex = 4
End Sub

Salut Xmenpl !

Je me permet d'apporter des modifications à ton code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Cells.Interior.ColorIndex = xlNone 'Retire les anciennes mise en forme
Target.EntireRow.Interior.ColorIndex = 4 'Affiche la ligne active en vert

End Sub

Effectivement Pedro ; je partais du principe qu'aucune cellule n'avait de couleur à la base.

Alors la ligne "Cells.Interior.ColorIndex = 2" c'était en blanc au lieu de "none"

Pour le choix de la couleur à la place du vert fluo voir le très bon cours excel pratique :

https://www.excel-pratique.com/fr/vba/couleurs.php

Bonjour Romm1,

Salut Pedro22, Xmenpl,

Une variante....pour rester dans la limite du tableau....

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim Dl As Integer, Dc As Integer

  With Sheets("Feuil1")
   Dl = .Range("A" & Rows.Count).End(xlUp).Row
   Dc = .Cells(1, Columns.Count).End(xlToLeft).Column

   .Range(.Cells(2, 1), .Cells(Dl, Dc)).Interior.ColorIndex = xlNone

    If Not Application.Intersect(Target, Range(.Cells(2, 1), .Cells(Dl, Dc))) Is Nothing Then
     .Range(Cells(Target.Row, 1), Cells(Target.Row, Dc)).Interior.ColorIndex = 24
    End If
  End With
End Sub
28ligne-grisee.xlsm (16.67 Ko)

Cordialement,

Salut Pedro22, Xmenpl,

Une variante....pour rester dans la limite du tableau....

Cordialement,

Bonjour, Xorsankukai il me semble que je restais dans la limite du tableau avec ces lignes

With Sheets("Feuil1")

Dl = .Range("A" & Rows.Count).End(xlUp).Row

Dc = .Cells(1, Columns.Count).End(xlToLeft).Column

Salut Pedro22, Xmenpl,

Une variante....pour rester dans la limite du tableau....

Cordialement,

Bonjour, Xorsankukai il me semble que je restais dans la limite du tableau avec ces lignes

With Sheets("Feuil1")

Dl = .Range("A" & Rows.Count).End(xlUp).Row

Dc = .Cells(1, Columns.Count).End(xlToLeft).Column

Le problème se pose si tu sélectionnes une cellule hors champ (à l'extérieur de la plage contenant des données, que tu délimites effectivement dans ton code).

bien vu j'avais même pas essayé de cliquer à l'extérieur !

bonjour

Merci Messieurs pour vos aides nombreuses.

j'ai hâte d'essayer. Mais je ne sais malheureusement pas comment ouvrir Worksheet ( ni l'utiliser)

Pouvez vous m'indiquer la manip ou Auriez vous un tuto à me conseiller

Merci

Cordialement

bonjour

Merci Messieurs pour vos aides nombreuses.

j'ai hâte d'essayer. Mais je ne sais malheureusement pas comment ouvrir Worksheet ( ni l'utiliser)

Pouvez vous m'indiquer la manip ou Auriez vous un tuto à me conseiller

Merci

Cordialement

Bonjour,

Tu peux déjà consulter la section de cours VBA du site.

Le code proposé se déclenche automatiquement selon la réalisation d'un événement particulier (ici un changement de sélection) sur une feuille. C'est pour ça qu'on appelle cela "procédure évenementielle".

Le code est donc à placer dans le module de la feuille en question, accessible depuis l'éditeur VBA (ALT + F11).

PS : voir les 3 modules au dessus du module "ThisWorkbook" sur cette image : vbe

bonjour

une contribution avec des explications

cordialement

Re bonjour,

Pour accéder au vba et donc au worksheet de la feuille : ALT F11 ou en fonction du pc ALT FN F11

Tu vas apercevoir plusieurs fenêtres dont une qui indique "projet - VBAProject"

Tu doubles clic sur le nom de la feuille qui à besoin de ce code.

Dans la fenêtre qui suit ; en haut tu as 2 sélecteurs 1 affiche Général l'autre (Déclarations)

Tu clic sur générale et tu selectionnes "Worksheet"

Tu n'as plus qu'à faire un copié collé des codes que l'on t'a donné.

Merci pour vos réponses bien claires et complètes.

Et bravo de participer à ce site qui comble mes attentes que je me fais d'internet : partager et progresser.

Rechercher des sujets similaires à "affichage griser ligne selectionnee"