Icône de la ressource

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

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.
Les principales caractéristiques:
  • Permet de positionner un UserForm par rapport à un Objet d'une feuille (Range, Control de formulaire ou Active X, Image, Shape, ...).

  • C'est une alternative très simplifiée à la Ressource VBA - Positionner un Objet par rapport à un autre Objet - Principal concerné... le UserForm qui répond au besoin d'un positionnement simple et fréquent avec peu de paramètres et sans prise en compte des marges extérieures du UserForm qui requièrent un traitement API particulier.
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.
    Par exemple, dans l'image ci-dessous, il semble y avoir un léger décalage du UserForm vers la droite.
    Ce sont ces marges qui donnent cette impression alors que le positionnement est parfaitement exact.
    Une correction par rapport à ces marges est possible mais requiert un traitement avec des fonctions API qui n'ont pas été implémentées dans cette version simple. Si la précision est requise, il vaut alors mieux utiliser la Ressource citée ci-dessus qui couvre des situations plus complexes et plus diverses.
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

  • 2 paramètres optionnels supplémentaires permettent:
    - 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.

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