52 votes

Comment maintenir le texte sélectionné en surbrillance lorsque le focus change dans Microsoft Word/Excel ?

En rapport avec cette question : Afficher la sélection de cellules dans Excel lorsqu'elle n'est pas au centre de l'attention sauf que mon cas concerne Microsoft Word.

Lorsque je sélectionne du texte ou une colonne/rangée dans Microsoft Word ou Excel (2003, 2007, 2010 ou 2013), il apparaît en surbrillance comme suit dans Word :

enter image description here

et Excel :

enter image description here

Cependant, lorsque je passe à un autre programme, le texte mis en évidence ne l'est plus.

Je travaille généralement avec deux moniteurs, dont l'un contient un document/une feuille de calcul contenant des données que je dois lire, et l'autre moniteur est celui sur lequel je travaille. Je sélectionne du texte (ou des cellules) pour le faire ressortir parmi les nombreuses pages de données, puis je change de programme, mais le texte en surbrillance n'est plus visible.

Existe-t-il une solution permanente à ce problème ?

2voto

hupiukko Points 21

J'ai longtemps été confronté à ce même problème. Moi aussi, je me perds dans des fichiers Excel denses lorsque j'utilise plusieurs écrans.

Il y a une énorme collection de plugins Excel disponibles sur internet. J'ai découvert que l'extension Excel de Kutools (la version gratuite) dispose d'une croix de surbrillance activée/désactivée en un seul clic qui reste visible même si Excel n'est pas mis au point. Kutools semble également disposer de nombreuses fonctionnalités supplémentaires, mais ce n'est certainement pas la seule option disponible.

Voici une capture d'écran du réticule de mise en évidence de Kutools en action :

Screenshot of Kutools highlight cross-hair in action

Je sais que certaines personnes ont peur des plugins ou outils tiers, mais les utiliser est probablement l'option la plus rapide et la plus facile.

0voto

BAS Points 11

Insérer une zone de texte qui s'étend sur la longueur des cellules. Tapez une rangée de ******* caractères similaires pour remplir la zone de texte. Vous pouvez déplacer la zone de texte vers le bas de la page comme vous le feriez avec une règle ou une feuille de papier sur une copie papier. Supprimez le texte lorsque vous avez terminé.

0voto

Travis Heeter Points 621

Une solution simple qui place une couleur de cellule lorsque la sélection change

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Selection.Interior.ColorIndex = xlColorIndexNone
    Selection.Interior.Color = RGB(204, 204, 204)
End Sub

Une solution complexe qui ne change la couleur de la cellule que lorsque le focus est perdu

Dans un module standard :

Option Explicit    
Public s As Range

Dans la (les) feuille(s) dans laquelle (lesquelles) vous voulez qu'il travaille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set s = Selection
End Sub

En ThisWorkbook :

Private Sub Workbook_Deactivate()
    If s Is Nothing Then
        Set s = Selection
        Exit Sub
    End If
    s.Interior.ColorIndex = xlColorIndexNone
    s.Interior.Color = RGB(204, 204, 204)

    ' This is optional formatting to make the cells look more like they're actually selected
    s.Borders.Color = RGB(130, 130, 130)
    s.BorderAround _
    Color:=RGB(30, 130, 37), Weight:=xlThick
End Sub

Private Sub Workbook_Activate()
    If s Is Nothing Then
        Set s = Selection
        Exit Sub
    End If
    s.Interior.ColorIndex = xlColorIndexNone
    s.Borders.ColorIndex = xlColorIndexNone
End Sub

Citations : La solution simple est basée sur <a href="https://superuser.com/a/746997/232563">une réponse </a>par <a href="https://superuser.com/users/146314/dave">@Dave </a>La solution complexe a été élaborée à partir de nombreuses sources, en particulier avec l'aide de la Commission européenne. <a href="https://stackoverflow.com/users/4996248/john-coleman">@JohnColeman </a>en <a href="https://stackoverflow.com/questions/41153872/how-to-send-variables-between-a-sheet-and-book">ce poste </a>.

0voto

cyberponk Points 201

La mise en forme conditionnelle et VBA constituent un moyen très simple d'y parvenir.

Il suffit d'ajouter ceci à votre code ThisWorkbook :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Application.CutCopyMode = False Then
        Application.Calculate
    End If
End Sub

et exécuter le code suivant une seule fois pour créer les règles de formatage conditionnel :

Sub CreateConditionalFormats()
  Dim y As FormatCondition
    For Each ws In ThisWorkbook.Worksheets
        DoEvents

        'Optionally delete any existing conditional formats
        'ws.Cells.FormatConditions.Delete

        ' Selection highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(ROW()=CELL(""row""), COLUMN()=CELL(""col""))")
        With y.Borders(xlTop)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlBottom)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlLeft)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlRight)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False
        y.SetFirstPriority

        ' Row highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")")
        With y.Borders(xlTop)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlBottom)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False

        ' Column highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=COLUMN()=CELL(""col"")")
        With y.Borders(xlLeft)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlRight)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False
    Next
End Sub

0voto

IvanStanic Points 1

L'utilisation de l'insertion d'une forme ou d'un rectangle est une solution simple. Sélectionnez l'option "Pas de remplissage" et vous pourrez même modifier les cellules à travers elle.

Jetez un coup d'œil à l'image ici :

Take a look at the picture here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X