Bonjour à tous
J'ai créé une feuille (modèle xltm) formulaire ou je mets en temporairement en évidence la cellule active (ici en rouge).
Les cellules changent de couleur quand je clique dessus ou passe d'une cellule à l'autre avec TAB.
Le problème survient lorsque je veux enregistrer ma feuille, la cellule active ne reprend pas sa couleur d'origine et l'enregistrement plante car la variable est considérée comme vide.
Les variables sont déclarées Public dans Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) et leurs valeurs ne sont pas restituées dans Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean).
Les variables sont testées par msgbox.
J'ai cherché, en vain, comment conserver la valeur des varaibles. Je vous remercie de votre préciause aide.
' Variables
Public AncienneCouleurCellule As Integer
Public AncienneAdresseCellule As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'==========
' La cellule active est mise en évidence (ici, avec la couleur rouge)
' Ne fonctionne que si les cellules sont colorisées avec les 56 couleurs de base d'Excel.
' Procédure (1) si la feuille est protégée (sinon plantage
Application.ScreenUpdating = False
ActiveSheet.Unprotect
' Procédure principale
If Not AncienneAdresseCellule Is Nothing Then
AncienneAdresseCellule.Interior.ColorIndex = AncienneCouleurCellule
End If
AncienneCouleurCellule = Target.Interior.ColorIndex
Target.Interior.ColorIndex = 3
Set AncienneAdresseCellule = Target
' Test
MsgBox "La couleur d'origine est la couleur N° " & AncienneCouleurCellule
' Procédure (2) si la feuille est protégée (sinon plantage) - 2
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Pushed = True
Application.ScreenUpdating = True
'==========
End Sub
----------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ActiveCell.Interior.ColorIndex = 3 Then
' Test
MsgBox "La couleur d'origine est la couleur N° " & AncienneCouleurCellule
ActiveCell.Interior.ColorIndex = AncienneCouleurCellule
End If
End Sub
Je ne sais pas si le ma feuille sera jointe au message car étant en réseau les pièces jointes ne sont pas tjs prises en compte. Si c'est le cas je la ferai parvenir plus tard.
J'ai créé une feuille (modèle xltm) formulaire ou je mets en temporairement en évidence la cellule active (ici en rouge).
Les cellules changent de couleur quand je clique dessus ou passe d'une cellule à l'autre avec TAB.
Le problème survient lorsque je veux enregistrer ma feuille, la cellule active ne reprend pas sa couleur d'origine et l'enregistrement plante car la variable est considérée comme vide.
Les variables sont déclarées Public dans Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) et leurs valeurs ne sont pas restituées dans Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean).
Les variables sont testées par msgbox.
J'ai cherché, en vain, comment conserver la valeur des varaibles. Je vous remercie de votre préciause aide.
' Variables
Public AncienneCouleurCellule As Integer
Public AncienneAdresseCellule As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'==========
' La cellule active est mise en évidence (ici, avec la couleur rouge)
' Ne fonctionne que si les cellules sont colorisées avec les 56 couleurs de base d'Excel.
' Procédure (1) si la feuille est protégée (sinon plantage
Application.ScreenUpdating = False
ActiveSheet.Unprotect
' Procédure principale
If Not AncienneAdresseCellule Is Nothing Then
AncienneAdresseCellule.Interior.ColorIndex = AncienneCouleurCellule
End If
AncienneCouleurCellule = Target.Interior.ColorIndex
Target.Interior.ColorIndex = 3
Set AncienneAdresseCellule = Target
' Test
MsgBox "La couleur d'origine est la couleur N° " & AncienneCouleurCellule
' Procédure (2) si la feuille est protégée (sinon plantage) - 2
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Pushed = True
Application.ScreenUpdating = True
'==========
End Sub
----------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ActiveCell.Interior.ColorIndex = 3 Then
' Test
MsgBox "La couleur d'origine est la couleur N° " & AncienneCouleurCellule
ActiveCell.Interior.ColorIndex = AncienneCouleurCellule
End If
End Sub
Je ne sais pas si le ma feuille sera jointe au message car étant en réseau les pièces jointes ne sont pas tjs prises en compte. Si c'est le cas je la ferai parvenir plus tard.
Pièces jointes
Dernière édition: