Afficher la sélection de cellules dans Excel lorsqu'elle n'est pas mise au point


26

Il est vraiment ennuyeux qu'Excel (2003 et 2007) ne montre pas quelle cellule, ligne ou colonne qui est sélectionnée lorsque la fenêtre n'est pas mise au point. Je souhaite généralement faire référence à la cellule ou à la ligne actuelle lorsque je travaille dans une autre application.

Existe-t-il une solution de contournement ou un correctif qui mettra la cellule / ligne en surbrillance lorsqu'elle n'est pas mise au point? Je sais que vous pouvez copier une cellule (Ctrl + C) mais c'est un peu fastidieux de le faire à chaque fois.


2
Cntrl + C n'est pas bon, car je veux conserver le contenu de mon presse-papiers
Keltari


Réponses:


4

Je pense qu'il y a du travail mais ça dépend vraiment de votre situation!

Vous pouvez créer une macro qui se déclenche lorsque la sélection change et change simplement l'arrière-plan de chaque cellule. Lorsque vous «quittez» la cellule, la valeur d'arrière-plan de la ligne est réinitialisée en blanc, puis sélectionnez la nouvelle ligne.

J'ai ajouté cela à ma feuille Sheet1 dans la fenêtre Visual Basic.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cells.Interior.ColorIndex = xlColorIndexNone
    ActiveCell.EntireRow.Interior.ColorIndex = 34
End Sub

Cette capture d'écran a été prise alors que l'application avait perdu le focus.

Cela peut être ennuyeux, mais vous pouvez facilement ajouter un bouton qui pourrait activer ou désactiver cette fonction!

Les négatifs sont (du haut de ma tête: cela supprimera toute la surbrillance actuelle que vous avez. Donc, si vous avez une surbrillance sur votre page (cellules colorées), il vaut mieux ne pas l'utiliser! De plus, il s'imprimera probablement avec les lignes en surbrillance!

entrez la description de l'image ici


2

Vous pouvez faire quelque chose comme ça si vous en avez besoin. Bien qu'il puisse être spécifique à la feuille

Dim wasActive As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If wasActive = Empty Then wasActive = "A1"
Range(wasActive).Interior.ColorIndex = "0"
ActiveCell.Interior.ColorIndex = "6"
wasActive = ActiveCell.Address
End Sub

Cela change ce qui n'est pas actif en blanc et change la cellule active en jaune. et montre toujours quand la fenêtre n'est pas active. Je ne sais pas si c'est la meilleure façon, mais ça marche


2

Voici une modification du code de @datatoo. Il lit les valeurs précédentes pour éviter de perdre la couleur de remplissage actuelle. Il modifie également la couleur du texte pour le faire ressortir davantage. Je l'ai ajouté à la feuille Excel dans l'éditeur de code (Alt-F11 d'Excel).

Cliquez ici pour plus d'informations sur la création d'un événement de modification de feuille de calcul.

'VBA code for Excel to show active cell in worksheet when worksheet is out of focus

Dim wasActive As String
Dim originalFillColor As String
Dim originalTextColor As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Set up colors on load
    If wasActive = Empty Then
        wasActive = "A1"
        originalFillColor = Range(wasActive).Interior.Color
        originalTextColor = Range(wasActive).Font.Color
    End If

    'Reset previous cell to original color values; If statement prevents removal of grid lines by using "0" for clear fill color when white
    If originalFillColor = 16777215 Then
        Range(wasActive).Interior.ColorIndex = "0"
        Range(wasActive).Font.Color = originalTextColor
    Else
        Range(wasActive).Interior.Color = originalFillColor
        Range(wasActive).Font.Color = originalTextColor
    End If

    'Set new colors and change active cell to highlighted colors (black fill with white text)
    originalFillColor = ActiveCell.Interior.Color
    originalTextColor = ActiveCell.Font.Color
    wasActive = ActiveCell.Address
    ActiveCell.Interior.ColorIndex = "1"
    ActiveCell.Font.ColorIndex = "2"

End Sub

1

Utilisez une forme pour mettre en surbrillance la sélection.

Remarque: cela ne fonctionne que lorsque vous passez à une autre fenêtre Excel. Pour contourner ce problème, vous pouvez ouvrir une fenêtre Excel vide et basculer vers cette fenêtre avant de passer à une autre application pour conserver la surbrillance.

Ajoutez simplement ceci à votre ThisWorkbookcode (votre classeur, pas le code de votre feuille). Cela fonctionnera pour chaque feuille de votre classeur.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    DeleteSelectionHighlight
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    DeleteSelectionHighlight
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
  On Error Resume Next
    Dim shp As Shape
    Application.ScreenUpdating = False

    Set shp = ActiveSheet.Shapes("SelectionHighlight")
    If Err.Number <> 0 Then
        Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1)
        With shp 'Format shape to your preference
            .Name = "SelectionHighlight"
            .Line.ForeColor.RGB = RGB(226, 0, 0) ' Border color
            .Line.Weight = 1.5
            .Line.DashStyle = msoLineSolid
            .Fill.Visible = msoFalse 'No background
            '.Fill.ForeColor.RGB = RGB(0, 153, 0) 'Background color
            '.Fill.Transparency = 0.95 'Background transparency
        End With
    End If

    Dim oldZoom As Integer
    oldZoom = Wn.Zoom
    Wn.Zoom = 100 'Set zoom at 100% to avoid positioning errors
    With shp
        .Top = Wn.Selection.Top   'Tweak the offset to fit your desired line weight
        .Left = Wn.Selection.Left 'Tweak the offset to fit your desired line weight
        .Height = Wn.Selection.Height
        .Width = Wn.Selection.Width
    End With
    Wn.Zoom = oldZoom 'Restore previous zoom
    Application.ScreenUpdating = True
End Sub

Private Sub DeleteSelectionHighlight()
  On Error Resume Next
  Dim shp As Shape
    Set shp = ActiveSheet.Shapes("SelectionHighlight")
    shp.Delete
End Sub

Vous pouvez même formater la forme selon vos préférences en modifiant le code.

Les avantages sont:

  • vous ne perdez pas votre mise en forme d'origine lorsque Excel tombe en panne en cas de panne de courant
  • Vous ne perdez pas votre mise en forme d'origine lorsque vous utilisez CTRL + [à partir d'un autre classeur qui modifie la feuille active
  • Vous ne perdez pas la surbrillance lorsque vous apportez des modifications à l'autre fenêtre Excel par rapport à la solution CTRL + C

0

Dans Excel 2003, l'adresse de cellule actuellement sélectionnée est affichée dans le coin supérieur gauche. Bien que la cellule ne soit pas mise en surbrillance, elle vous amène à mi-chemin.


0

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

une solution de contournement (peut devenir ennuyeuse dans un certain temps) serait de modifier la mise en évidence des cellules sélectionnées pendant qu'elles sont sélectionnées et de 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 certaines cellules, sélectionnez-en d'autres puis resélectionnez les premières pour 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

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 des cellules 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 qu'il 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 précédente de @Dave ; La solution complexe a été réunie à partir de nombreuses sources, en particulier avec l'aide de @JohnColeman dans cet article .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.