Le fichier à télécharger contient:
- Le Module_PositionUserFormOnSheetO à importer dans le projet VBA.
- Le Module_Test comme exemple de mise en œuvre.
- 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.
- 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.
- 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.
- Version
- V1