web-dev-qa-db-fra.com

Mettez en surbrillance la ligne/colonne active dans Excel sans utiliser VBA?

Ce que je veux réaliser est de mettre en surbrillance la ligne ou la colonne active. J'ai utilisé des solutions VBA mais chaque événement Selection_change est utilisé. Je perds la possibilité d'annuler toute modification apportée à ma feuille de calcul. 

Existe-t-il un moyen de mettre en évidence ligne/colonne active sans utiliser VBA?

24
lowak

Tout d'abord merci! Je venais de créer une solution avec la mise en évidence des cellules, l'utilisation de Selection_Change et la modification du contenu des cellules. Je ne savais pas que cela désactiverait Annuler. J'ai trouvé un moyen de le faire en combinant mise en forme conditionnelle, Cell () et l'événement Selection_Change. Voici comment je l'ai fait. 

  • Dans la cellule A1, je mets la formule = cellule ("rangée")
  • La rangée 2 est complètement vide
  • La rangée 3 contient les en-têtes
  • La ligne 4 et plus bas sont les données
  • Pour que la formule de A1 soit mise à jour, la feuille doit être recalculée. Je peux le faire avec F9, mais j'ai créé l'événement Selection_Change avec le seul code à exécuter estRange("A1").Calculate. De cette façon, cette opération est effectuée chaque fois que l'utilisateur se déplace et, comme le paramètre Selection_Change ne modifie aucune valeur/format, etc. dans la feuille, l'annulation n'est pas désactivée. 
  • Entrez maintenant le mise en forme conditionnelle pour mettre en surbrillance les cellules qui ont la même ligne que la cellule A1 .
    • Sélectionnez la colonne entière B
    • Mise en forme conditionnelle, Gestion des règles, Nouvelle règle, Utilisez une formule pour déterminer les cellules à mettre en forme
    • Entrez cette formule: = ligne (B1) = $ A $ 1
    • Cliquez sur Format et sélectionnez la manière dont vous souhaitez le mettre en surbrillance.
    • Prêt. Appuyez sur OK dans les popups.

Cela fonctionne pour moi.

6
Nybbe

Une alternative à Range.Calculate est d'utiliser ActiveWindow.SmallScroll Le seul inconvénient est que l'écran scintille pendant une fraction de seconde après avoir fait une nouvelle sélection . Lorsque vous faites défiler manuellement, vous devez vous assurer que la nouvelle sélection se déplace ) complètement, pour que cela fonctionne. C'est pourquoi, dans le code ci-dessous, nous devons faire défiler suffisamment pour que toutes les lignes visibles sortent de l'affichage, puis revenir à la même position pour forcer le rafraîchissement de l'écran pour le formatage conditionnel.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ScreenUpdating = False
ActiveWindow.SmallScroll Down:=150 'change these values to total rows displayed on screen
ActiveWindow.SmallScroll Down:=-150 'change these values to total rows displayed on screen
'DoEvents 'unable to use this to remove the screen flicker
ScreenUpdating = True
End Sub

Crédits: Rory Archibald https://www.experts-exchange.com/questions/28275889/When-is-Excel-conditional-formatting-refresh.html

2
Aato

Sur les feuilles, l'événement Selection_change appelle ce qui suit:

Function highlight_Row(rngTarget As Range)
    Dim strRangeRow As String
    strRangeRow = rngTarget.Row
    strRangeRow = strRangeRow & ":" & strRangeRow
    Rows(strRangeRow).Select
    rngTarget.Activate
End Function

C'est un format long pour plus de clarté!

0
Colin Nunn

À l'aide de la mise en forme conditionnelle, au lieu de mettre en évidence l'intégralité de la ligne et de la colonne, il est possible de mettre en surbrillance la ligne située à gauche de la cellule et la colonne au-dessus de la cellule avec le code ci-dessous:

=OR(AND(CELL("col")=COLUMN();(CELL("row")-1)>=ROW());AND(CELL("col")>=COLUMN();(CELL("row")-1)=ROW()))
0
Felipe Ribeiro