Bonjour à tous,
J'ai ce petit code VBA qui semble fonctionner à 90%, et qui me permet de mettre en surbrillance la ligne entière selon la cellule sélectionnée.
Dans l'idée, je compte activer et désactiver cette fonction via un bouton de commande dans le ruban Excel. Le seul hic, c'est que le rafraîchissement (screenupdating) ne fait pas en temps réel, c'est à dire que la colorisation des lignes de change pas à chaque changement de sélection à la souris. Concrètement, cela fonctionne si j'entre une valeur dans une cellule, mais pas lors du changement de sélection.
Ce type de fonction marche très bien sur un fichier donné en y mettant une simple MFC et en y ajoutant un Application.screenupdating = true dans le code de la feuille directement. Mais comme je compte utiliser cette fonction de manière universelle, je ne peux pas entre de code VBA dans Thisworkbook, ou dans une feuille, je dois garder tout le code dans un module standard de mon fichier Personnal.xlsb pour pouvoir l'utiliser dans mon ruban.
Quelqu'un a-t-il une idée?
Juien
J'ai ce petit code VBA qui semble fonctionner à 90%, et qui me permet de mettre en surbrillance la ligne entière selon la cellule sélectionnée.
VB:
Option Explicit
Dim highlightActive As Boolean
Sub ToggleConditionalFormatting()
Dim ws As Worksheet
Set ws = ActiveSheet
highlightActive = Not highlightActive
If highlightActive Then
ApplyConditionalFormatting ws
MsgBox "La mise en forme conditionnelle a été activée.", vbInformation
Else
RemoveConditionalFormatting ws
MsgBox "La mise en forme conditionnelle a été désactivée.", vbInformation
End If
' Activer le rafraîchissement de l'écran sur la feuille active
ws.Application.ScreenUpdating = True
End Sub
Sub ApplyConditionalFormatting(ws As Worksheet)
With ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=LIGNE()=CELLULE(""ligne"")")
.Interior.Color = RGB(214, 220, 228)
End With
' Activer le rafraîchissement de l'écran spécifiquement pour cette feuille
'ws.EnableCalculation = True
ws.Application.ScreenUpdating = True
End Sub
Sub RemoveConditionalFormatting(ws As Worksheet)
ws.Cells.FormatConditions.Delete
' Activer le rafraîchissement de l'écran spécifiquement pour cette feuille
'ws.EnableCalculation = True
ws.Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Application.ScreenUpdating = True
End Sub
Dans l'idée, je compte activer et désactiver cette fonction via un bouton de commande dans le ruban Excel. Le seul hic, c'est que le rafraîchissement (screenupdating) ne fait pas en temps réel, c'est à dire que la colorisation des lignes de change pas à chaque changement de sélection à la souris. Concrètement, cela fonctionne si j'entre une valeur dans une cellule, mais pas lors du changement de sélection.
Ce type de fonction marche très bien sur un fichier donné en y mettant une simple MFC et en y ajoutant un Application.screenupdating = true dans le code de la feuille directement. Mais comme je compte utiliser cette fonction de manière universelle, je ne peux pas entre de code VBA dans Thisworkbook, ou dans une feuille, je dois garder tout le code dans un module standard de mon fichier Personnal.xlsb pour pouvoir l'utiliser dans mon ruban.
Quelqu'un a-t-il une idée?
Juien