VBA: adapter la taille de Formulaire à la taille de l’écran

Les Formulaires sont une excellente fonctionnalité de VBA. Une de mes préférées, je dois avouer. Mais parfois, on doit faire face à quelques difficultés. Par exemple comment adapter la taille du Formulaire à la taille de l'écran de manière automatique et ainsi rendre l'utilisation optimale indépendamment de l'écran de l'utilisateur? Je vous propose une solution simple, efficace et toute prête à l'emploi.

Comment fonctionne la taille de Formulaire en VBA

Quand vous créez un formulaire, il a une hauteur (Height) et largeur (Width) fixe en Twips (unité de mesure correspondant à une 1440ème d'un pouce, c'est à dire 0,001764 cm). Le problème est que l'affichage peut varier selon la résolution de l'écran de l'utilisateur. Ou encore, avec Windows 10, et ses fonctions d'agrandissement (zoom) de tout le système.

VBA: Formulaire - Largeur

Bref, il peut facilement arriver que votre Formulaire ne rentre pas complètement sur l'écran de l'utilisateur ce qui peut très ennuyeux où même rendre votre formulaire/application tout à fait inutilisable (les boutons pas visibles car "en dehors" de l'écran…). Et comme vous ne maîtrisez pas la résolution de l'écran de l'utilisateur, il faut adapter le Formulaire. Pour cela, on va automatiquement ajuster sa hauteur, largeur et le Zoom – qui détermine la taille des objets se trouvant dans le formulaire.

 

Exemple de formulaire VBA
Exemple de formulaire VBA

Je vous propose donc une fonction générique qui adaptera la taille de votre formulaire et tous les éléments qu'il contient pour qu'ils correspondent à la taille de l'écran utilisé.

Code VBA pour ajuster un  Formulaire VBA à l'écran

Voici la procédure en question qui adaptera l'affichage de votre formulaire (sans le modifier!) pour qu'il puisse être affiché sur n'importe quel écran avec n'importe quelle résolution. Ainsi, il ne dépassera jamais les bords de l'écran.

Le code est écrit en sorte qu'il puisse être utilisé tel quel pour n'importe quel formulaire (en format paysage, portrait,…)

Voici donc le code de la procédure:

Comment cela marche en détail (si cela vous intéresse...)

Comment cela fonctionne-t-il? (si cela vous intéresse…)

J’ajoute cette explication à des fins pédagogiques. Si vous avez juste besoin du code tout fait, vous pouvez passer à la section suivante…

On procède en 4 étapes:

  1. On maximise la fenêtre de Excel pour pouvoir déterminer la taille utilisable de l’écran.
  2. On vérifie si le formulaire tel quel rentre sur l’écran (= ne dépasse pas). Si c’est le cas, il ne faut rien faire et la macro s’arrête là.
  3. Si le formulaire est trop grand on calcule à quel point il dépasse sur la largeur et sur la hauteur. On travaillera avec le côté qui dépasse (ou dépasse le plus au cas où les deux côtés sont trop grands)
  4. On calcule le ratio entre la taille du formulaire et la taille de l’écran et on adapte le .Zoom, la largeur (.Width) et la hauteur (.Height) avec ce ratio. J’utilise également un ration de 0.95 (= je diminue la taille du formulaire de 5%) pour éviter qu’il dépasse derrière la barre des tâches…
    ou

Comment l'utiliser en pratique

Comme vous pouvez voir, la procédure travaille avec les propriétés du formulaire (Me.). Cela implique qu'elle doit se trouver dans le code du formulaire même pour lequel elle doit être utilisée.

Vous devez donc copier ce code et le coller dans le formulaire.

L'ajustement du formulaire a lieu au moment de l'initialisation de celui-ci (c'est à dire lors de la "préparation" du formulaire juste avant son affichage). Vous devez donc appeler la procédure AdapterTailleFormAEcran dans l'événement UserForm_Initialize.

Voici à quoi ressemblent donc les deux parties du code dont vous aurez besoin:

Et voilà… Simple comme bonjour 😉

Attention: n'oubliez pas que, comme mentionné plus haut, ce code doit être placé au niveau du Formulaire. Si donc votre Projet contient 5 formulaires différents, ce code doit être copié dans chacun d'eux.

Pour aller plus loin en VBA…

Et pour terminer, voici quelques autres articles qui pourraient vous être utiles…

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

8 commentaires sur “VBA: adapter la taille de Formulaire à la taille de l’écran”