Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 surligner automatiquement la ligne d'une cellule active

Naniomasu

XLDnaute Nouveau
Bonjour à tous,

j'ai un fichier Excel qui contient 14 tableaux de suivi de stock j'aimerais lorsque je cliquer sur une cellule la ligne de cette dernière ce sur ligne automatiquement.
Mes tableaux se nomme respectivement mai, juin, juillet, août, septembre, octobre, novembre, décembre, janvier, février, mars, avril. J'ai déjà consulté les articles du forum sur ce même sujet mais je n'ai pas trouvé de réponse.

par avance je vous par avance je vous remercie en espérant avoir été le plus clair possible.
Cordialement,
 

Victor21

XLDnaute Barbatruc
Re, Naniomasu.

[...]J'ai déjà consulté les articles du forum sur ce même sujet mais je n'ai pas trouvé de réponse.
[...]
Mal cherché, peut-être. Dans le module de la feuille concernée :
VB:
Option Explicit

Private lngAvant As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If lngAvant <> 0 Then
        If Target.Row <> lngAvant Then
            Range("a" & lngAvant).EntireRow.Style = "normal"
        End If
    End If
    lngAvant = Target.Row
    Target.EntireRow.Interior.ColorIndex = 3    'rouge
    Target.EntireRow.Font.ColorIndex = 2         'blanc
    Target.EntireRow.Font.Bold = True
End Sub
 

Naniomasu

XLDnaute Nouveau
re victor21,

merci pour le code, seulement quand je sélectionne une ligne il détruit les bordures de mon tableau et j'aimerais appliquer ce code seulement au tableau et non pas à la feuille. Est-ce que cela est possible ?

Cordialement,
 

Victor21

XLDnaute Barbatruc
Re, Naniomasu.

Je ne suis pas un spécialiste du VBA, loin s'en faut. Je n'ai fait que copier/coller un code existant.
Et je serais bien incapable de l'adapter à votre tableau, même si vous aviez eu la bonne idée de le partager aux fins de tests.
Mais d'autres passeront peut-être...
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Une autre idée :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Names.Add "LSel", Target.Row
End Sub
Et dans le tableau, une mise en forme conditionnelle avec pour formule :
Code:
=LIGNE()=LSel
 

Dranreb

XLDnaute Barbatruc
Ben vous mettez la procédure dans le module de l'objet Worksheet qui représente la feuille concernée, comme celle de Victor21 !
Vous aurez alors un nom LSel valant le numéro de ligne de la plage sélectionnée, que vous pourrez utiliser dans la formule d'une mise en forme conditionnelle pour surligner cette ligne.
 

Naniomasu

XLDnaute Nouveau
Je n'ai toujours pas compris cependant, j'ai trouver la bonne formule, elle respecte ma mise en forme :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Cells.Interior.ColorIndex = xlNone
Target.EntireRow.Interior.ColorIndex = 3

End Sub

Voila merci pour m'avoir accorder de votre temps, je vais pouvoir aller dormir en paix maintenant, Bonne nuit et a très bientôt !
 

job75

XLDnaute Barbatruc
Bonsoir Naniomasu, Patrick, Bernard,

Placez cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal Targt As Range)
Dim LO As ListObject, r As Range
For Each LO In ListObjects
    LO.DataBodyRange.Interior.ColorIndex = xlNone
    LO.DataBodyRange.Font.ColorIndex = xlAutomatic
    Set r = Intersect(ActiveCell, LO.DataBodyRange)
    If Not r Is Nothing Then
        Set r = Intersect(r.EntireRow, LO.DataBodyRange)
        r.Interior.ColorIndex = 3 'rouge
        r.Font.ColorIndex = 2 'blanc
    End If
Next
End Sub
Edit : bien sûr comme indiqué dans la macro les tableaux doivent être des tableaux structurés Excel (ListObject).

Bonne nuit.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…