un pseudo evenement Application_AfterResize
par
, 28/06/2019 à 10h36 (668 Affichages)
bonjour a tous
juste une petite astuce pour créer un évènement AfterResize de l'application qui n'existe pas
l'évènement window_Resize ne fonctionnant qu'avec le Windows du classeur il est donc inutilisable pour la fenêtre application
cette méthode demande très peu de ressource puisque la surveillance se fait avec l'évènement on_update de la commandbars
une alternative au timer (api) ou application ontime en boucle et autre
de plus quand le update est déclenché il est non bloquant pour le reste des macros ou l'utilisation de Excel
pour l'exemple je zoom une plage définie pour la garder visible entièrement a chaque instant
a placer dans le module thisworkbook
[CODE=vba]
Option Explicit
Private WithEvents Cmbrs As CommandBars
Dim oldwidth As Double
Dim oldheight As Double
'
'evenement commandbars
Private Sub Cmbrs_OnUpdate()
With Application
.CommandBars.FindControl(ID:=2040).Enabled = Not .CommandBars.FindControl(ID:=2040).Enabled
If oldheight <> .Height Or .Width <> oldwidth Then
Application_AfterResize
End If
End With
End Sub
'
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars.FindControl(ID:=2040).Enabled = True
End Sub
'
Private Sub Workbook_Open()
Set Cmbrs = Application.CommandBars
End Sub
'
'
Private Sub Application_AfterResize()
Dim cel As Range
Set cel = Selection
Range("A1:J30").Select
ActiveWindow.Zoom = True
oldheight = Application.Height
oldwidth = Application.Width
cel.Select
End Sub
[/CODE]
testé sur 2007