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?
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.
Range("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. Cela fonctionne pour moi.
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
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é!
À 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()))