userform suivant résolution écran

BEUBZIR

XLDnaute Nouveau
bonjour la communauté,
je cherche à créer un petit programme qui doit s'ouvrir sur plusieurs postes de travail, avec des résolutions d'écran différentes.
j'ai trouver des lignes de code sur le forum, que j'ai essayé d'appliquer à mon userform, mais j'ai un affichage complètement bisard à l'écran quelle que soit la résolution de l'écran. (voir fichier joint).
Est ce que l'un d'entre vous saurait me dire ce qui fait que ça ne fonctionne pas ?
 

Papou-net

XLDnaute Barbatruc
Re : userform suivant résolution écran

Bonjour BEUBZIR,

Peux-tu décrire plus précisément la bizarrerie d'affichage que tu observes ?

Moi, j'ai testé ton fichier et j'obtiens bien un affichage plein écran. Par ailleurs, la lecture de ton code ne m'a pas révélé d'erreur apparente concernant l'affichage.

A te lire.

Cordialement.
 

BEUBZIR

XLDnaute Nouveau
Re : userform suivant résolution écran

Bonjour Papou-net,
le userform apparait tout déformé à l'écran, même sur le miens. Je ne sais pas ce qui produit ce phénomène?
As tu la même chose à l'ouverture du fichier? (voir fichier joint)
 

Pièces jointes

  • résultat écran.zip
    60.3 KB · Affichages: 95
  • résultat écran.zip
    60.3 KB · Affichages: 95
  • résultat écran.zip
    60.3 KB · Affichages: 89

Papou-net

XLDnaute Barbatruc
Re : userform suivant résolution écran

Bonjour Papou-net,
le userform apparait tout déformé à l'écran, même sur le miens. Je ne sais pas ce qui produit ce phénomène?
As tu la même chose à l'ouverture du fichier? (voir fichier joint)

Re : Non, j'ai un affichage plein écran tout-à-fait normal. Je ne vois pas d'où peut venir ce problème : pourrais-tu par hasard joindre une copie d'écran ?

Cordialement.
 

BEUBZIR

XLDnaute Nouveau
Re : userform suivant résolution écran

le fichier que j'ai joint au message précedent correspond à la copie d'écran du résultat du userform.
certain éléments sont rétrécis, ça ne correspond pas au userform qui apparait dans VBA.
avant que j'intègre les formules pour redimentionner l'objet, je n'avais pas ce phénomène? ??
 

Pièces jointes

  • résultat écran.zip
    60.7 KB · Affichages: 85
  • résultat écran.zip
    60.7 KB · Affichages: 80
  • résultat écran.zip
    60.7 KB · Affichages: 96

Papou-net

XLDnaute Barbatruc
Re : userform suivant résolution écran

le fichier que j'ai joint au message précedent correspond à la copie d'écran du résultat du userform.
certain éléments sont rétrécis, ça ne correspond pas au userform qui apparait dans VBA.
avant que j'intègre les formules pour redimentionner l'objet, je n'avais pas ce phénomène? ??

RE : Pardon, je n'avais pas ouvert le fichier, je pensais que c'était le même que celui de ton envoi initial.

Alors, effectivement, j'ai le même problème, sauf en cE qui concerne le contrôle multipage.

Par contre, moi je procède différemment pour ajuster le zoom en fonction de l'écran de destination :

Après avoir défini mes contrôles sur mon écran, je créé une variable facteur de zoom (FZoom par exemple) et je le calcule de la façon suivante :

Code:
Public FZoom As Single
FZoom = Application.Width / 1024

Ensuite je multiplie tous les contrôles par ce facteur de zoom, ex :

Code:
With UserForm1
  .Width = CInt(.Width * FZoom)
  .Height = CInt(.Height * FZoom)
End With
For Each ctrl In UserForm1.Controls
  ctrl.Top= CInt(ctrl.Top* FZoom)
  ctrl.Left= CInt(ctrl.Left* FZoom)
  ctrl.Width = CInt(ctrl.Width * FZoom)
  ctrl.Height = CInt(ctrl.Height * FZoom)
  ctrl.FontSize = CInt(ctrl.FontSize * FZoom)
  ...
  ...
  ...
Next

Dans cet exemple, je considère bien sûr que mon écran est réglé à 1024 pixels en largeur.

Espérant avoir été utile.

Cordialement.
 

BEUBZIR

XLDnaute Nouveau
Re : userform suivant résolution écran

J'ai un peut de mal à vraiment saisir la démarche, je n'ai jamais appris réellement à me servir de VBA, je copie et colle ce qu'il me semble bon pour ce que je dois faire et tritouille un peut tout ça jusqu'à ce que ça fonctionne, ou pas...

De ce fait, peux tu me dire ce qu'est "défini(r) mes contrôles sur mon écran" ?

Et peux tu m'indiquer où je dois coller ces formules pour que l'application fonctionne?

Est ce que je dois remplacer les formules que j'ai mis par celles ci ?

Merci d'avance pour ton complément d'aide.
Cordialement.
 

BEUBZIR

XLDnaute Nouveau
Re : userform suivant résolution écran

Papou-net, je viens d'identifier la variable qui fait grossir ou rétrécir l'affichage du usf.

Sub determine()
fontbouton = 12==> cette valeur fais grossir ou rétrécir les usf...
hauteur_usf = UserForm1.Height
largeur_usf = UserForm1.Width
i = 0
For Each ctrl In UserForm1.Controls
i = i + 1
ReDim Preserve l(i)
l(i) = ctrl.Width
ReDim Preserve h(i)
h(i) = ctrl.Height
ReDim Preserve topbouton(i)
topbouton(i) = ctrl.Top
ReDim Preserve leftbouton(i)
leftbouton(i) = ctrl.Left
Next
End Sub


Par contre, j'ai toujours un petit défaut d'affichage, certain objets ne sont pas net ou un peut déforrmés.
Peux tu quand même m'aider à appliquer ta formule pour avoir une autre solution à ce petit souci?

merci d'avance.
Cordialement.
 

laetitia90

XLDnaute Barbatruc
Re : userform suivant résolution écran

bonjour BEUBZIR, Papou-net:):)
je viens de regarder ton fichier
dans ton cas la macro determine sert a rien il faut ecrire le code dans user a moins que que tu veus appliquer a plusieurs users donc variable public
le code dans user ci dessous sert a rien egalement dans ton cas on resize pas
Code:
Private Sub UserForm_Resize()
On Error Resume Next
i = 0
For Each ctrl In Controls
i = i + 1
ctrl.Width = Me.Width / (largeur_usf / l(i))
ctrl.Height = Me.Height / (hauteur_usf / h(i))
ctrl.Left = Me.Width / (largeur_usf / leftbouton(i))
ctrl.Top = Me.Height / (hauteur_usf / topbouton(i))
ctrl.FontSize = ((Me.Height + Me.Width) / 8) / (fontbouton * 2)
Next
End Sub

c'est quoi ce code ci dessous

Code:
Private Sub userform1_Initialize()
    Me.StartUpPosition = 2
End Sub

2 initialize ???

de plus tu utilise des images il vaut mieux utilser des images dans des frames

en attendant plus d'infos si je peus t'aider si pas de solution d'ici la regarderais demain soir si j'ai le temps trés prise en ce moment d'ou mes bréves apparitions sur le forum sorry
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : userform suivant résolution écran

Bonsoir laetitia90,

RE BEUBZIR,

J'ai modifié ton fichier selon les propositions que je t'ai faites précédemment. A l'affichage du formulaire, celui s'affiche avec le facteur de zoom calculé par la macro ZoomEcran.

Comme le signale Laetitia, j'ai mis en commentaires les parties de code qui ne sont pas utiles.

J'ai également ajouté une feuille avec une copie d'écran de UserForm1.

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • BEUBZIR.zip
    87.7 KB · Affichages: 232

BEUBZIR

XLDnaute Nouveau
Re : userform suivant résolution écran

Bonjour Laeticia90, comme tu as du t'en rendre compte, je ne maitrise pas du tout VBA.
Le code cité ci dessus était la première façon de positionner mon usf dans l'écran, je ne savais pas encore que j'aurais un problème d'adaptation aux différentes résolutions d'écrans de mes collègues. J'ai oublié de le supprimer lors que j'ai recopié l'autre formule.
Je vais regarder la proposition de Papou-net ci dessou et te resoliciterais peut être si je n'arrive pas à faire fonctionner celle ci.
Cordialement.
 

BEUBZIR

XLDnaute Nouveau
Re : userform suivant résolution écran

Bonsoir laetitia90,

RE BEUBZIR,

J'ai modifié ton fichier selon les propositions que je t'ai faites précédemment. A l'affichage du formulaire, celui s'affiche avec le facteur de zoom calculé par la macro ZoomEcran.

Comme le signale Laetitia, j'ai mis en commentaires les parties de code qui ne sont pas utiles.

J'ai également ajouté une feuille avec une copie d'écran de UserForm1.

Espérant avoir répondu.

Cordialement.

Bonjour Papou-net,
j'ai prix connaissance du fichier que tu m'a envoyé, et celui ci à l'air de fonctionner, il faut que je l'essai sur un autre poste, mais il fonctionne sur le mien lorsque je change de résolution.
Par contre, pour bien comprendre la démarche, peux tu m'expliquer une ou deux choses :
1/ Je ne retrouve pas la formule précédament cité : "Public FZoom As Single
FZoom = Application.Width / 1024", as tu créé la variable facteur de zoom autrement?

2/ que signifie "Option Explicit" ? J'avais intégré ça pour reproduire une formule qui devait avoir le même effet.

3/ et pour finir, que signifie cette ligne de code ?
"Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True"

Merci de votre aide, j'essai de bricoler sans connaitre ce langage, mais j'aime quand même bien comprendre ce que je fais, surtout pour le reproduire un jour si besoin.

Cordialement.
 

BEUBZIR

XLDnaute Nouveau
Re : userform suivant résolution écran

Une petite question au sujet des images,
Laeticia90, tu me parle de les utiliser dans des "Frames": Kesako?
J'ai effectivement un problème de redimentionnement des image, qui ne s'adaptent pas axactement aux différentes résolutions d'écran, elles sont plus ou moins rognées.
Certain "Label" sont aussi rogné par le redimentionnement ?

Vraiment pas facile de fabriquer un outil utilisable sur tous les postes de travail.

Merci encore de votre aide.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : userform suivant résolution écran

Bonjour BEUBZIR, Laetitia90, le Forum,

1/ Je ne retrouve pas la formule précédament cité : "Public FZoom As Single
FZoom = Application.Width / 1024", as tu créé la variable facteur de zoom autrement?

En fait, cette variable n'étant utilisé que dans le code affecté à la mise à l'échelle de l'écran, je l'ai déclarée en local dans Module8 :

Code:
Dim FZoom As Single

2/ que signifie "Option Explicit" ? J'avais intégré ça pour reproduire une formule qui devait avoir le même effet.

Option Explicit oblige à déclarer toutes les variables utilisées dans la totalité du code. Ca permet une vérification de validité des variables et de détecter des erreurs de variables pendant l'écriture du code. Elle n'est pas obligatoire, mais conseillée, surtout lorsqu'on débute.

Code:
3/ et pour finir, que signifie cette ligne de code ?
"Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True"

Cette macro inhibe la petite croix de fermeture du formulaire. Pour le fermer, tu dois impérativement cliquer sur le bouton "Quitter" prévu à cet usage.

Espérant avoir répondu.

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 068
Membres
103 110
dernier inscrit
Privé