Icône de la ressource

VBA - Ajouter le Menu Système à un UserForm, minimiser / restaurer, maximiser (boutons & code VBA) V5

Le fichier à télécharger contient:
  1. Le Module_UserFormSystemMenu à importer dans le projet VBA.
  2. Le Module_Test qui donne des exemples d'utilisation.
Les principales caractéristiques:
  • Office 2010+ (VBA7 sinon modifier les déclarations API comme indiqué).
  • Utilitaire qui n'a vraiment de sens que pour un UserForm vbModeless permettant de libérer la zone de travail du classeur en minimisant le UserForm.
  • Ajout paramétrable des boutons du menu système (Minimiser, Maximiser, Redimensionner) au UserForm.
  • Les actions du menu système sont disponibles via les boutons et via le code VBA avec les fonctions dédiées.
  • La minimisation du UserForm offre pas moins de 3 options:
    a) - Minimisation relative à la zone de référence qu'est la fenêtre Excel,
    b) - Minimisation relative à la zone de référence qu'est l'écran (présume la barre des tâches en bas de l'écran pour simplifier)
    c) - Minimisation en barre des tâches.
  • La minimisation du UserForm (a & b) via le bouton positionne par défaut en bas à gauche de la zone de référence.
  • La minimisation du UserForm (a & b) via le code VBA permet en plus un positionnement horizontal et vertical paramétrable par curseurs virtuels (Ratios de 0 à 1) dans la zone de référence.
    Cela permet de minimiser un ou plusieurs UserForms à des endroits différents de la zone de référence.
  • Restauration et Maximisation disponibles via les boutons et/ou via le code VBA.
Mise en œuvre très simple:
  • Placer le Module_UserFormSystemMenu dans la projet VBA...

  • Dans le code du UserForm sur Private Sub UserForm_Activate(), appeler la fonction:
    Call UserFormSystemMenu() avec les paramètres ad hoc (voir commentaires).

  • Dans le code du UserForm, sur les évènements ou boutons choisis, appeler les fonctions:
    Call UserFormMinimize(), Call UserFormRestore(), Call UserFormMaximize() avec les paramètres ad hoc (voir commentaires).

  • A noter que ces fonctions peuvent parfaitement être appelées dans le contexte d'un Module et pas seulement dans le code du UserForm.
    Voir le Module_Test pour exemples.
Versions:
  • V1 - Initiale
  • V2 - Corrections pour compatibilité Office 64 bits
  • V3 - Nouvelle correction pour compatibilité Office 64 bits
  • V4 - Correction de bugs déclaratifs
  • V5 - La variable Public UsfHandle dans le UserForm n'est plus nécessaire. Les fonctions du Module s'arrangent pour le retrouver.
Note: merci à @patricktoulon pour son aide à l'élaboration de cette ressource.


USF1.gif
  • J'aime
Réactions: Narest et Andre13