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

49

Lié à cette question: Afficher la sélection de cellule dans Excel non ciblée, sauf que mon cas concerne Microsoft Word.

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

entrez la description de l'image ici

et Excel:

entrez la description de l'image ici

Cependant, lorsque je change de focus sur un autre programme, le texte en surbrillance n'est plus en surbrillance.

Je travaille généralement avec 2 moniteurs, un moniteur contenant un document / une feuille de calcul contenant des données que je dois lire, et l’autre moniteur étant l’endroit où je travaille réellement. Je vais sélectionner du texte (ou des cellules) pour le faire ressortir parmi les nombreuses pages de données, puis changer de programme, mais le texte en surbrillance n'est plus visible.

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

Glenneroo
la source
@CGTheLegend: Les solutions alternatives proposées coûtent de l'argent ou sont des macros temporaires pour lesquelles AFAIK ne fonctionne pas sur plusieurs fichiers.
Glenneroo

Réponses:

23

Un moyen rapide de résoudre la moitié de votre problème (lors du passage d'Excel à Word) consiste à copier le texte. Lorsque vous appuyez sur Ctrl + c, les cellules continuent à être marquées (le surlignage a disparu, mais vous avez toujours une ligne en pointillé autour du texte).

L'inconvénient est que les textes ne sont marqués que si vous conservez les cellules copiées. Cela signifie que vous ne pouvez rien copier d'autre ou que le marquage est parti. Malheureusement, cela ne fonctionnera pas de Word à Excel.

Rubaijat
la source
14

Cela semble être une "fonctionnalité" exclusive de Microsoft. Pour la plupart des projets, je n'ai besoin que d'un accès en lecture seule et le formatage n'a pas d'importance dans mon cas. C'est pourquoi je suis passé à OpenOffice qui ne présente pas ce comportement.

Glenneroo
la source
3
Je ne pense pas que cette réponse mérite la meilleure solution. Utiliser une application différente n’est pas vraiment la meilleure solution pour tout le monde.
CGTheLegend,
J'aime cette solution car MS n'a pas supprimé ce bogue depuis 100 ans
Hartmut P.
Personnellement, j'ai constaté que LibreOffice était plus compatible.
Damian Vogel le
6

il n'y a pas de solution permanente à ce problème.

une solution de contournement (peut-être gênante dans un moment) consisterait à modifier la mise en surbrillance des cellules sélectionnées lorsqu'elles sont sélectionnées et à les sélectionner à nouveau pour supprimer la couleur.

Collez ce code dans le code Sheet1 derrière et allez dans votre feuille de calcul et sélectionnez des cellules, sélectionnez-en d'autres, puis sélectionnez à nouveau les premières à supprimer la couleur.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim cell As Range

    For Each cell In Target.Cells
        If cell.Interior.Color = RGB(60, 150, 230) Then
            cell.Interior.Pattern = xlNone
        Else
            cell.Interior.Color = RGB(60, 150, 230)
        End If
    Next
End Sub

la source
@DaveRook L'idée de changer la couleur de fond de l'événement SelectionChange ou Activate devrait fonctionner pour Excel et Word.
6

Ce VBA le fera, mais il suppose que vous n'utilisez pas de mise en évidence. Si vous l'êtes, votre mise en surbrillance sera perturbée, alors ne l'utilisez pas.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveCell.Worksheet.Cells.Interior.ColorIndex = xlNone
    ActiveCell.EntireRow.Interior.ColorIndex = 19
End Sub

Comment ajouter VBA dans MS Office?


Comme une solution de contournement massive (si la mise en évidence ne fonctionne pas pour vous), vous pouvez utiliser quelque chose comme JRuler (écoutez-moi :) !! ) car cela vous permettra de laisser la règle à l’écran avec la rangée en question au-dessus de sorte que lorsque vos yeux reviendront à cet écran, vous pourrez voir où vous étiez (pour que vous puissiez voir, j’ai perdu ma mise en surbrillance mais au moins je peux voir regardait la rangée 3)!

Ne vous méprenez pas, c'est laborieux et pénible si vous le faites souvent, mais cela peut suffire pour n'importe quel programme (Word et Excel).

entrez la description de l'image ici

Dave
la source
4

Après dix ans de problèmes qui me rendaient dingue, j'ai enfin trouvé une solution qui fonctionne pour moi. Malheureusement, ce n’est pas gratuit ... Actual Window Managera une fonctionnalité appelée "Ignorer la désactivation" qui peut être activée pour des applications spécifiques. Cela fait penser à la fenêtre qu'elle a toujours le focus, même si ce n'est pas le cas. Cette option est activée pour toutes les applications bureautiques et je peux toujours voir la sélection en surbrillance, même si une autre fenêtre est activée. Je n'ai pas eu d'effets secondaires négatifs non plus. J'utilise également plusieurs moniteurs et ce programme contient une tonne d'autres outils utiles pour travailler avec plusieurs moniteurs, ce qui en a valu la peine pour moi. J'ai installé la version d'essai, puis je l'ai désinstallée et cela m'a offert 30% de réduction. Il y a peut-être un programme gratuit qui fait cela mais je ne pouvais pas en trouver un ... J'espère que cela aide quelqu'un autant qu'il m'a aidé!

bskip
la source
Malheureusement, cette méthode ne fonctionne pas pour Word 2010 et Windows 7
Eugene Mala
2

Je luttais avec ce même problème depuis longtemps. Moi aussi, je me perds dans des fichiers Excel denses lorsque j'utilise plusieurs écrans.

Il existe une énorme collection de plugins Excel disponibles sur Internet. J'ai découvert que l'extension Kutools Excel (la version gratuite) permet de mettre en surbrillance un réticule qui reste visible même si Excel n'est pas net. Kutools semble également avoir beaucoup de fonctionnalités supplémentaires, mais ce n'est certainement pas la seule option disponible.

Voici une capture d'écran des Kutools soulignant le réticule en action:

Capture d'écran de Kutools met en valeur le réticule en action

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

Hupiukko
la source
0

Insérer une zone de texte qui s'étend sur la longueur des cellules. Tapez une ligne 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 un morceau de papier sur une copie papier. Supprimer lorsque vous avez terminé.

BAS
la source
0

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 la mise au point est perdue

Dans un module standard:

Option Explicit    
Public s As Range

Dans la ou les feuilles dans lesquelles vous souhaitez que cela fonctionne:

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

Dans 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 une réponse de @Dave ; La solution complexe a été réunie à partir de nombreuses sources, notamment avec l’aide de @JohnColeman dans ce message .

Travis Heeter
la source
0

Une méthode très simple consiste à utiliser la mise en forme conditionnelle et VBA.

Ajoutez simplement 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écutez le code suivant une seule fois pour créer les règles de format conditionnelles:

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
cyberponk
la source
0

Utiliser une forme / un rectangle est une solution de contournement simple. Sélectionnez l'option "Pas de remplissage" et vous pourrez même éditer des cellules à travers elle.

Regardez la photo ici:

Regardez la photo ici

IvanStanic
la source