XL 2016 Mettre ligne de la cellule active en couleurs ou en bordure spéciale

Cotriana

XLDnaute Nouveau
Bonjour,

Cela fait plusieurs jours que je cherche comment mettre la ligne de la cellule sélectionnée en couleur ou en bordure colorée.
Par exemple, si je clique sur la cellule C12, toutes la lignes 12 passe en colorée ou en bordure colorée.

J'ai un fichier avec beaucoup de colonnes et de données, ça permettrait d'éviter de devoir se déplacer de gauche à droite avec la souris.

En espérant que l'un d'autres vous s'est déjà posé la question.
 
Solution
Ah oui, STATIC...

Moi j'avais pensé à un truc dans ce genre mis dans le Worksheet de la feuille :
VB:
Dim OldLine As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim MaPlage As Range

    Set MaPlage = ActiveSheet.Range("B2:G15")

    If Target.Rows.Count = 1 Then
    
        If Not OldLine Is Nothing Then
            With MaPlage.Resize(1).Offset(OldLine.Row - 2).Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .PatternTintAndShade = 0
            End With
        End If

        If Not Intersect(Target, MaPlage) Is Nothing Then
            With MaPlage.Resize(1).Offset(Target.Row - 2).Interior
                .Pattern = xlLightUp...

Staple1600

XLDnaute Barbatruc
Bonjour

Si j'ai bien compris
A mettre dans le code de la feuille
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.Color = xlNone
Target.EntireRow.Interior.Color = vbYellow
End Sub
NB: C'est une solution basique ( à éprouver en situation réelle)
 

Staple1600

XLDnaute Barbatruc
RE

Ci-dessous le code pour ThisWorkbook
VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Sh.Cells.Interior.Color = xlNone
If Target.Count = 1 Then
Target.EntireRow.Interior.Color = vbYellow
End If
End Sub
Evidemment il faut supprimer le code précédent que tu as mis dans ta feuille de test.
 

Cotriana

XLDnaute Nouveau
purée je suis bête, j'ai mal compris je n'ai pas l'habitude de mettre un code dans une feuille j'ai tendance à créer essentiellement des modules
Merci ça surligne bien la ligne c'est parfait mais est-ce normal que ça me désactive les autres couleurs comme celle des en-têtes (exemple ci-dessous)
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    33.4 KB · Affichages: 28

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Le mieux serait peut-être, non pas de changer la couleur de fond, mais ajouter un motif hachuré jaune.

Et sinon, j'ai une question : comment on revient à la couleur d'origine quand on change de ligne ?
Il faut gérer ça avec une variable globale et tout le toutim ??? :eek:
Je pense que c'est l'autre problème dont parlait le camarade Staple1600.
 

TooFatBoy

XLDnaute Barbatruc
Ah oui, STATIC...

Moi j'avais pensé à un truc dans ce genre mis dans le Worksheet de la feuille :
VB:
Dim OldLine As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim MaPlage As Range

    Set MaPlage = ActiveSheet.Range("B2:G15")

    If Target.Rows.Count = 1 Then
    
        If Not OldLine Is Nothing Then
            With MaPlage.Resize(1).Offset(OldLine.Row - 2).Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .PatternTintAndShade = 0
            End With
        End If

        If Not Intersect(Target, MaPlage) Is Nothing Then
            With MaPlage.Resize(1).Offset(Target.Row - 2).Interior
                .Pattern = xlLightUp
                .PatternColor = 65535
                .PatternTintAndShade = 0
            End With
            Set OldLine = Target
        End If

    End If

End Sub
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir chacun, chacune et les autres...

Voici un exemple d'une technique que j'emploie, à base de noms et mise en forme conditionnelle + tout petit vba.
Dans l'exemple l'effet est limité au tableau nommé "DATAS" mais ce n'est pas obligatoire.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Intersect(Target, Range("DATAS")) Is Nothing Then
    Application.Names.Add "LigneActive", Target.Row
    Application.Names.Add "ColonneActive", Target.Column
 Else
    Application.Names.Add "LigneActive", 0
    Application.Names.Add "ColonneActive", 0
 End If
End Sub

Pour le choix des couleurs, j'ai fait rapide, alors ne criez pas.

cordialement
 

Pièces jointes

  • MFC-Ligne colonne actives.xlsm
    24.7 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Re, Bonjour Hasco

Un JM se doit de citer un autre JM
(tant pis pour la poussière de 17 ans d'âge ;))
 

Discussions similaires

Statistiques des forums

Discussions
314 656
Messages
2 111 610
Membres
111 224
dernier inscrit
Test66