Icône de la ressource

VBA - Positionner un UserForm sur un Objet d'une Feuille (Cellule, Contrôle, Forme, Image, etc...) V5

Le fichier à télécharger contient:
  1. Le Module_PositionUserFormOnSheetO à 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:
Remarque:
  • Selon les versions d'Excel et de Windows, les UserForms possèdent des marges extérieures plus ou moins grandes qui peuvent laisser penser que le positionnement n'est pas tout à fait précis. Pour une position visuellement précise, on effectue donc une petite correction par défaut dans le code (développé et testé sur Windows 10 64bits et Excel 2016 64bits).

    Si pour d'autres environnements cette correction n'est pas juste, valoriser le paramètre optionnel ad hoc pour l'annuler et utiliser éventuellement les paramètres optionnels de décalage horizontal et vertical.
Mise en œuvre très simple:
  • Placer le Module_PositionUserFormOnSheetO dans la projet VBA.

  • Dans le code VBA utiliser la fonction PositionUserFormOnSheetObject() avec les paramètres ad hoc.
    VB:
    Call PositionUserFormOnSheetObject(UserForm1, ActiveCell)
    UserForm1.Show

  • 4 paramètres optionnels supplémentaires permettent:
    - d'activer ou pas la correction automatique des marges extérieures du UserForm,
    - de définir un décalage horizontal (en Points) par rapport à la gauche (.Left) de l'Objet,
    - de définir un décalage vertical (en Points) par rapport au haut (.Top) de l'Objet.
    - de dimensionner le UserForm à la taille de l'Objet.
Versions:
  • V1 - Initiale.
  • V2 - MacOS compatible + ajout option d'ignorer les marges extérieures du UserForm pour un positionnement visuel plus précis.
  • V3 - Correction pour intégration des paramètres HorizontalShiftPoints et VerticalShiftPoints dans le PointsToScreenPixelsX/Y pour leur appliquer aussi le Zoom.
  • V4 - Intègre le calcul des marges du UserForm par l'API.
  • V5 - Ajout du paramètre optionnel SizeOnWorksheetObject qui permet de dimensionner le UserForm à la taille de l'objet.

USF.gif
Version
V1
  • J'aime
Réactions: AtTheOne