Icône de la ressource

VBA - Activer un classeur et afficher sa fenêtre si minimisée. V1

Le fichier à télécharger WorkbookActivate.xlsm contient:
  1. Le Module_WorkbookActivate à importer dans le projet VBA.
  2. Le Module_Test comme exemple de mise en œuvre.
Note: Voir toutes mes ressources -> https://excel-downloads.com/resources/?creator_id=268468

Les principales caractéristiques:
  • 1 seule fonction:
    WorkbookActivate() pour activer la ou une fenêtre d'un classeur et l'afficher si cette fenêtre est minimisée.
Remarques:
  • En VBA, il peut a priori sembler simple d'activer un classeur par un basique Workbook.Activate , mais il n'en est rien, en particulier si ce classeur possède plusieurs fenêtres qu'un utilisateur aura créées (Affichage / Nouvelle fenêtre) pour plus de commodité.

    De plus, si la fenêtre du classeur a été préalablement minimisée, il n'est pas suffisant de l'activer pour la voir apparaître. Il faut aussi la "dé-minimiser", c'est à dire l'afficher dans l'état où elle était avant la minimisation.

  • Cette fonction permet d'activer:
    • la dernière fenêtre active du classeur (cas le plus classique),
    • la fenêtre d'ordre 'n' dans l'activation des fenêtres du classeur,
    • la "vraie" première fenêtre du classeur qui ne dépend pas de l'ordre d'activation,
    • la fenêtre d'un Handle donné.
    • ...
  • Elle permet aussi d'afficher la fenêtre désignée si celle-ci est minimisée, dans son état d'avant minimisation.

  • La fonction peut bien sûr être utilisée pour un classeur mono-fenêtre ou multi-fenêtres.

  • A noter que si la fonction ne trouve pas la fenêtre désignée (Index ou Handle invalide), elle activera la dernière fenêtre active du classeur.
Mise en œuvre très simple:
  • Placer le Module_WorkbookActivate dans la projet VBA.
  • Dans le code VBA, utilise la fonction WorkbookActivate() avec ses paramètres ad hoc.
Exemple:
VB:
'The last Workbook activated Window (most common call)
Call WorkbookActivate(Workbook)
Call WorkbookActivate("MyWorkbook.xlsx")
'
'The "true" 1st Window of the Workbook regardless of the activation order
Call WorkbookActivate(Workbook, 0)
Call WorkbookActivate("MyWorkbook.xlsx", 0)
'
'The 2nd last Workbook activated Window
Call WorkbookActivate(Workbook, 2)
Call WorkbookActivate("MyWorkbook.xlsx", 2)
'
'The Workbook Window by Handle
Call WorkbookActivate(Workbook, WindowHandle)
Call WorkbookActivate("MyWorkbook.xlsx", WindowHandle)
Version
V1