Se souvenir de la position et de la taille du classeur (Microsoft Excel)
Walter a besoin de toujours ouvrir un classeur Excel particulier au même emplacement sur l’écran et avec une taille de fenêtre particulière. Il se demande s’il existe un moyen pour qu’Excel se souvienne de cet emplacement et des informations de taille lors de la fermeture du classeur afin qu’il soit utilisé lors de la prochaine ouverture de ce même classeur.
Une solution relativement simple consiste à positionner votre classeur (ou, souvent, les classeurs) comme vous le souhaitez à l’écran, puis à enregistrer les classeurs en tant qu’espace de travail. Pour ce faire, affichez l’onglet Affichage du ruban et cliquez sur l’outil Enregistrer l’espace de travail. Il convient de noter, cependant, que cette approche ne fonctionne que dans Excel 2007 et Excel 2010 – la possibilité de créer des espaces de travail a été supprimée d’Excel 2013, bien que vous puissiez toujours les ouvrir.
Pour une solution qui fonctionne dans toutes les versions modernes d’Excel, vous devrez utiliser une macro. Vous pouvez configurer une macro qui s’exécute automatiquement lorsque vous fermez le classeur et une autre qui s’exécute lorsque vous l’ouvrez. Celui qui s’exécute lorsque vous fermez peut enregistrer les informations de positionnement, puis celui qui s’exécute lorsque vous ouvrez peut récupérer ces informations et l’utiliser pour localiser où le classeur doit être affiché.
La question, cependant, est de savoir où enregistrer les informations de positionnement. Une solution consiste simplement à l’écrire dans un fichier texte dans le même dossier où le classeur est stocké. C’est l’approche adoptée dans la paire de macros suivante.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim fileName As String Dim myWindow As Window Set myWindow = ActiveWindow fileName = "config.txt" Open fileName For Output As #1 With myWindow Write #1, .Top Write #1, .Left Write #1, .Height Write #1, .Width End With Close #1 End Sub
Private Sub Workbook_Open() Dim inputStr As String Dim fileName As String Dim myWindow As Window Set myWindow = ActiveWindow fileName = "config.txt" If Dir(fileName) <> "" Then Open fileName For Input As #1 With myWindow .WindowState = xlNormal Line Input #1, inputStr .Top = inputStr Line Input #1, inputStr .Left = inputStr Line Input #1, inputStr .Height = inputStr Line Input #1, inputStr .Width = inputStr End With Close #1 End If End Sub
La macro qui s’exécute lorsque le classeur est fermé enregistre les quatre emplacements de positionnement (.Top, .Left, .Height et .Width) dans un fichier appelé config.txt. Ce fichier est ensuite lu lors de la prochaine ouverture du classeur et les propriétés appropriées pour la fenêtre du classeur sont définies.
Si le fichier config.txt est manquant pour une raison quelconque, le classeur s’ouvre à son emplacement par défaut.
Cette approche fonctionne très bien si vous avez un seul classeur dans le dossier qui utilise les informations de positionnement. Si vous en avez plusieurs, chacun écraserait le fichier config.txt, et vous finiriez probablement par ne pas ouvrir les classeurs là où vous le souhaitez.
Pour certaines personnes, une meilleure approche peut être de stocker les emplacements de positionnement dans le classeur lui-même, dans des références nommées. C’est l’approche adoptée dans les macros suivantes.
Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next With ThisWorkbook With .Names .Add Name:="WinTop", RefersToR1C1:="=1" .Add Name:="WinLeft", RefersToR1C1:="=1" .Add Name:="WinWidth", RefersToR1C1:="=1" .Add Name:="WinHeight", RefersToR1C1:="=1" End With On Error GoTo 0 .Names("WinTop").RefersTo = ActiveWindow.Top .Names("WinLeft").RefersTo = ActiveWindow.Left .Names("WinWidth").RefersTo = ActiveWindow.Width .Names("WinHeight").RefersTo = ActiveWindow.Height End With End Sub
Private Sub Workbook_Open() With ThisWorkbook ActiveWindow.Top = Val(Mid(.Names("WinTop").RefersTo, 2)) ActiveWindow.Left = Val(Mid(.Names("WinLeft").RefersTo, 2)) ActiveWindow.Width = Val(Mid(.Names("WinWidth").RefersTo, 2)) ActiveWindow.Height = Val(Mid(.Names("WinHeight").RefersTo, 2)) End With End Sub
Avec cette approche, vous pouvez facilement transférer le classeur où vous le souhaitez et les macros se chargent d’enregistrer et de réutiliser les informations de positionnement pour la fenêtre du classeur.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (10091) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.